C# 两个存储库可以共享同一个工作单元吗?

C# 两个存储库可以共享同一个工作单元吗?,c#,wpf,entity-framework,architecture,prism,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); 我的问题是,我可以为不

在我的项目中,我有两个选项卡,在ViewManager类中,我有以下代码来添加“向区域注册”这些视图

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

IRepo1 repo = new Repo1(UnitOfWork);

IRepo2 repo_second = new Repo2(UnitOfWork);

我的问题是,我可以为不同的存储库使用相同的工作单元吗

是的,这样做没有限制。您可以在上面的级别控制数据访问,当您访问某些存储库并执行诸如插入、更新和删除之类的任务时,这是很好的。只是一个伪代码示例,例如:

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();
}

好的,谢谢。我在想,因为它们使用相同的上下文,它会影响两个选项卡。不会,但请确保您可以控制上下文。