我看到几个与此有关的问题,但我仍然找不到我要找的答案,所以我发布了我的问题。如果有另一个问题的答案(我只是没有看到它),请告诉我。Unit Of Work属于w/EF4,IoC(Unity)和Repository?
我试图弄清楚我的UnitOfWork属于哪里 - 特别是创建时 - 在使用EF4和Unity时使用Repository模式。
基本上,我有一个服务是用来实现我的业务逻辑。这个服务构造函数需要存储库,所以服务被注入我的仓库。然后该服务使用注入的存储库对数据存储执行操作 - 但是我需要将这些包装在一个工作单元中。
但是,我的工作单元需要注入EF4上下文(或者,在我的情况下,以及上下文的接口 - IObjectContext)。我不确定应该在哪里创建UoW并将其注入上下文中。
这里是我能想到的,其中没有可能的选项看起来是理想的:
附上UOW在服务的构造,因此具有注入瓦特/工作单位,服务这反过来注入w /我的EF4上下文。但是这似乎是错误的,因为我不希望在存储库的每个实例上创建我的UoW。
使用container.Resolve进行按需创建,获取UoW的一个实例,注入我的EF4上下文。这看起来过度必须不断地打到IoC容器,而不是已经有权访问UoW。
将上下文直接注入到服务中,允许我创建一个UoW(上下文)。这看起来很糟糕,因为我已经将上下文暴露给了服务,并且这应该被隔离到存储库。
所以我的问题是,是可以接受的这些方法之一,或有另一种方法,我没有想到的?
在此先感谢。
感谢您的留言。这是有道理的,我会在周末尝试这种方法。我可能会跟进几个问题,但从概念上讲,这听起来很合理。 – 2011-02-18 16:20:59