【问题标题】:Entity Framework DbContext UnitOfWork Repository IoC实体框架 DbContext UnitOfWork 存储库 IoC
【发布时间】:2013-08-08 19:41:51
【问题描述】:

现在我使用 UnitOfWork:

class UnitOfWork:DbContext,IUnitOfWork
{
....
}

我以这种方式在我的服务类中使用它:

using(var uow = new UnitOfWork)
{
     var service = new Service(uow,new Repository<SomeClass>(uow));
     service.DoSomething();

}

我想将 UnitOfWork 注入服务构造函数。 我制作了桌面应用程序。 如何做到这一点以及如何处置 UnitOfWork?

【问题讨论】:

标签: c# entity-framework unity-container ioc-container ninject-2


【解决方案1】:
public class MyService {

    Func<IUnitOfWork> _dbFunc;

    public MyService(Func<IUnitOfWork> makeDbFunc) {
        _dbFunc = makeDbFunc;
    }

    public void MyServiceCall(){

        using(var disposableDb = (IDisposable)_dbFunc()){
            // Do Work Here
        }
    } 
}

用法:

MyService service = new MyService(() => new UnitOfWork());
service.MyServiceCall();  // <- UnitOfWork is created inside this method

您仍然需要在服务方法中创建一个新的 IUnitOfWork。但这是一种注入您将使用的具体类型的方法。

【讨论】:

  • 我想用 IoC 如何用 DI 和 IoC(Uniti) 来实现这个。
  • 我该如何处置 UnitOfWork,它是由 ioc - 容器创建的?
  • 查看stackoverflow.com/questions/10585478/…,了解使用 Unity 等容器注入 UnitOfWork 的好处和缺陷。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多