传递给方法

时间:2016-02-01 14:42:48

标签: entity-framework unit-of-work

我正在使用uow和存储库模式。

我在配置从主方法调用的方法中执行查询的正确方法时遇到了问题。

说清楚: 我有一些方法:

GetSomthingFromDB(int someId)
{
       using (var uow = new UnitOfWork())
       {
         //Get the study from Db withrelated Entities
                IRepository<Study> studyRepository 
                =uow.GetRepository<Study();
         Foreach(var finding in study.Findings) 
         { 
            SomeSubMethod(finding);
         }
       }
}

SomeSubMethod(Finding finding)
{
  //Do all kind of stuff on a finding
}

好的,现在在SomeSubMethod()中,我需要从Db中获取一些东西,让我们从配置表中说些什么。

但是我不会在subMethod里面u(可能是subMethods调用了另一个subMethod,只有那里我再次需要uow。

我应该将uow从一种方法转移到另一种方法吗?

我应该将存储库内部和内部传递吗?

我应该使用uow作为班级成员吗?

最佳做法是什么?

谢谢。塔尔。

1 个答案:

答案 0 :(得分:1)

一般信息:

  • 尽可能缩短连接的实时周期
  • 如果您使用的是WPF或ASP视图,那么只要视图处于活动状态,您就可以保持连接(uow)的活动。

  • 使用SRP设计您的方法

  

我应该将uow从一种方法转移到另一种方法吗?

是的,有时您需要将unitOfWork表单方法传递给其他方法。

  • 您可以私下传递它而不会出现任何问题
  • 如果将其传递给公共方法,则必须注意方法范围的使用,以避免任何并发问题。
  

我应该将存储库内部和内部传递吗?

这里的连接相同,如果你的方法是公共的并且从不同的层/线程调用,那么你可能会遇到一些并发问题。

  

我应该使用uow作为班级成员吗?

是的,如果你将它作为参数传递给constuctor并且没有setter,那就最好了。