我有一个应用程序,我正在使用Entity Framework 4.1作为我的数据访问层。我创建了几个与不同实体一起工作的存储库。作为构造函数的一部分,每个存储库都有一个UnitOfWork对象。然后,我为这些带有服务层的存储库创建了一个抽象。每个图层都会创建一个UnitOfWork,然后传递给其各自的存储库。一次打开多个UnitOfWork实例(ASP.Net Applicaiton)是不是一个好主意?
在我的服务层,我应该只打开一个可以被我创建的所有服务使用的UOW吗?我还没有遇到任何问题,但是想知道我在做什么可能会导致问题。
作为一个说明,在我的web应用程序,我只用一个实体类型同时插入更新数据时的工作。当我不得不实例化主实体的一个服务,然后可能有另一个服务来读取来自数据库中的配置表的静态数据时,我的担心就出现了。
我的回购要求,一个UOW中被传递,就像你说的,我不希望回购负责这一点。那么,在你的任务示例中,似乎我会一次打开多个UOW? – DDiVita 2011-06-15 20:19:10
不 - 对于混淆抱歉 - 说你有一个任务,建立一个关联公司的用户帐户。您的任务将创建一个UOW,然后在为用户实例化存储库和公司存储库时使用它,并使用同样的UOW。您将获取想要的公司,将其附加到新用户,然后使用该用户添加到用户回购协议。两个回购协议共享相同的UOW,因此不存在实体更改跟踪器冲突。 – 2011-06-16 13:06:32