两个存储库可以共享相同的工作单元吗?

时间:2014-09-10 14:29:26

标签: c# wpf entity-framework architecture prism

在我的项目中,我有两个标签,在ViewManager类中,我有以下代码添加注册区域的视图,

IBondsUnitOfWork UnitOfWork = new BondsUnitOfWork(new TestEntities(DALUtilities.ProjConnectionString));

IRepo1 repo = new Repo1(UnitOfWork);

IRepo2 repo_second = new Repo2(UnitOfWork);

我的问题是我可以对不同的存储库使用相同的UnitOfWork吗?

1 个答案:

答案 0 :(得分:0)

是的,这样做没有任何限制。您可以在上述级别控制数据访问,这在访问某些存储库并执行insertupdatedelete等任务时非常有用。只是一个伪代码样本,样本:

IBondsUnitOfWork unitOfWork = new BondsUnitOfWork(new TestEntities(DALUtilities.ProjConnectionString));

try
{
   unitOfWork.Open();
   unitOfWork.BeginTransaction();

   IRepo1 repo = new Repo1(unitOfWork);

   repo.Update(obj);

   IRepo2 repo_second = new Repo2(unitOfWork);

   repo.Add(obj2);

   unitOfWork.Commit();
}
catch (Exception ex)
{
   unitOfWork.RollBack();
   // catch exception here...
   // log..
}
finally
{
   unitOfWork.Close();
}