Entity framework EF6 DbContext生命周期问题

Entity framework EF6 DbContext生命周期问题,entity-framework,Entity Framework,考虑到EF本身就是一个存储库/uow,我决定在没有存储库和工作单元的情况下构建我的解决方案,那么为什么要抽象抽象呢。因此,我有一个服务/业务逻辑层,它将直接调用EF。我的服务有许多方法创建、更新、删除,这些方法调用_context.SaveChanges,我正在构造函数中注入DbContext 但是,如果我使用同一个服务实例调用多个方法,其中一个失败,则所有其他服务方法也将失败。比如说 var svc = new PersonService(); var person = new Person{

考虑到EF本身就是一个存储库/uow,我决定在没有存储库和工作单元的情况下构建我的解决方案,那么为什么要抽象抽象呢。因此,我有一个服务/业务逻辑层,它将直接调用EF。我的服务有许多方法创建、更新、删除,这些方法调用_context.SaveChanges,我正在构造函数中注入DbContext

但是,如果我使用同一个服务实例调用多个方法,其中一个失败,则所有其他服务方法也将失败。比如说

var svc = new PersonService();
var person = new Person{ Name = "Angie" };
svc.Create(person);
svc.Delete(56); //delete person with Id 50
让我们假设Create出于某种原因在SaveChanges上引发异常。当我调用Delete时,我的上下文中仍然有一个错误的Person对象,所以当Delete方法调用SaveChanges时,它将抛出相同的异常

当然,我可以通过在我的调用代码中实例化一个新的PersonService来解决这个问题,但这是错误的

这导致我为每个服务方法使用一个新的上下文,这意味着方法注入,而不是我希望避免的构造函数注入

我考虑过返回到repository/uow,但这似乎只是将问题更深一层

我的上下文的方法注入是正确的方法还是我遗漏了什么

谢谢