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;
如何在应用服务中注入 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;