ASP.NET BoilerPlate:如何在应用程序服务中注入 DbContext 对象?

ASP.NET BoilerPlate: How do I inject object of DbContext in application service?

如何在应用服务中注入 DbContext 对象?

需要访问它来创建实体记录的克隆。

这个问题有点模棱两可,但这里有几点供您考虑:

依赖注入:AUTOFAC或NINJECT(例如) 这将允许您通过 ctor 或 属性 将您的 DbContext 注入 到任何 class 中,您可以使用它。

将其作为参数传递(您的服务是如何生成的?)

var appService = new ApplicationService(new MyDbContext())

其中任何一个都可以。如果那不是您的意思,更多信息会有所帮助:)

您可以使用 IDbContextProvider<TDbContext> _sampleDbContextProvider 作为构造函数注入,与 _sampleDbContextProvider.GetDbContext();

一起使用

克隆实体的一种棘手方法是先序列化然后反序列化对象。使用 Newtonsoft 进行序列化。 只需使用此代码即可

MyEntity myEntity = _myEntityRepository.get(1);
string cloned = JsonConvert.SerializeObject(myEntity);
MyEntity clonedEntity = JsonConvert.DeserializeObject<MyEntity>(cloned);
clonedEntity.Id = 0;