我正在使用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作为班级成员吗?
最佳做法是什么?
谢谢。塔尔。
答案 0 :(得分:1)
一般信息:
如果您使用的是WPF或ASP视图,那么只要视图处于活动状态,您就可以保持连接(uow)的活动。
使用SRP设计您的方法
我应该将uow从一种方法转移到另一种方法吗?
是的,有时您需要将unitOfWork表单方法传递给其他方法。
我应该将存储库内部和内部传递吗?
这里的连接相同,如果你的方法是公共的并且从不同的层/线程调用,那么你可能会遇到一些并发问题。
我应该使用uow作为班级成员吗?
是的,如果你将它作为参数传递给constuctor并且没有setter,那就最好了。