WebApi - 依赖注入如何与“工作单位”相关联?

时间:2017-11-01 05:15:54

标签: entity-framework dependency-injection asp.net-web-api2 repository-pattern

我可以用2种方式实现CRUD操作的WebApi开发,1。我可以使用Repository模式+工作单元2.我可以使用Repository模式+依赖注入

我对哪种方法是正确的感到困惑?

需要指导 1.依赖注入如何与工作单元相关? 2.如果我使用Repository模式+工作单元还会覆盖DI吗? 3.我可以一起使用工作单元和DI。 4.问题与webapi和MVC相同吗?

1 个答案:

答案 0 :(得分:0)

工作单元涵盖DbContext的范围。它被设计为存储库类和控制器的可注入依赖项。依赖注入是一种模式,用于确保您的类接受通过构造函数或属性依赖的服务的引用。它们并不相互排斥,而是使用工作单元是一种与依赖注入相称的模式。

您可以使用像Autofac或Unity这样的Inversion of Control容器来管理类使用的依赖项,并管理这些依赖项的生命周期范围。例如,对于MVC和Web API,IoC容器将被设置为基于每个请求提供诸如工作单元之类的依赖性。 (意味着每个请求将被发布一个单独的工作单元实例)

如果你想要更多地控制工作单元,我推荐用于EF6的实现是Mehdi的DbContextScope模式。 (http://mehdi.me/ambient-dbcontext-in-ef6/)使用此模式,您依赖注入ContextScopeFactory和ContextScopeLocator,然后使用工厂创建上下文范围(工作单元),并且存储库可以使用定位器找到该工作单元。这使您可以使用using()块更精细地控制工作单元。

相关问题