我决定在没有存储库和工作单元的情况下构建我的解决方案(假设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来解决这个问题,但这只是尖叫的错误。
这导致我为每个服务方法使用一个新的上下文,这意味着方法注入而不是我希望避免的构造函数注入。
我已经考虑过回到存储库/ uow,但似乎这只会将问题深一层。
我的上下文的方法注入是正确的方法还是我在这里遗漏了什么?
由于