【发布时间】:2011-06-28 21:59:19
【问题描述】:
我看到几个与此相关的问题,但我仍然找不到我正在寻找的答案,所以我发布了我的问题。如果另一个问题有答案(而我只是没有看到),请指出它。
在将 EF4 和 Unity 与 Repository 模式一起使用时,我试图找出我的 UnitOfWork 所属的位置 - 尤其是创建的位置。
基本上,我有一个服务用于实现我的业务逻辑。此服务构造函数接收存储库,因此服务被注入到我的存储库中。然后该服务使用注入的存储库对数据存储执行操作——但我需要将它们包装在一个工作单元中。
然而,我的工作单元需要注入 EF4 上下文(或者,在我的情况下,以及上下文的接口——IObjectContext)。而且我不确定应该在哪里创建和注入 UoW。
以下是我能想到的可能选项,但似乎都不理想:
在服务构造函数中包含 UoW,从而使服务与工作单元一起注入,而工作单元又与我的 EF4 上下文一起注入。但这似乎是错误的,因为我不希望在存储库的每个实例上都创建我的 UoW。
使用 container.Resolve 进行按需创建以获取 UoW 的实例,注入我的 EF4 上下文。不得不不断地访问 IoC 容器,而不是已经可以访问 UoW,这似乎太过分了。
将上下文直接注入服务,允许我创建 UoW(上下文)。这似乎很糟糕,因为我现在已经向服务公开了上下文,这应该与存储库隔离。
所以我的问题是,这些方法中的一种是否可以接受,还是我没有想到的另一种方法?
提前致谢。
【问题讨论】:
标签: entity-framework repository unity-container ioc-container unit-of-work