【发布时间】:2013-01-31 00:04:58
【问题描述】:
深入了解实体框架和存储库,以实现更好的测试。想知道这是否明智?
public interface IRepository
{
int SaveChanges();
void Dispose();
}
using (MyContext context = new MyContext())
{
TransactionRepository txns = new TransactionRepository(context); // TransactionRepository implement IRepository
MappingRepository maps = new MappingRepository(context); // MappingRepositoryimplement IRepository
SomeCommand command = new SomeCommand(txns, maps);
command.Execute();
}
每个存储库在逻辑上都是不同的,因此理论上可能位于不同的数据源中。目前,他们使用相同的数据库。每个存储库类都实现了 IRepository,尤其是 SaveChanges() 以及一些我为了简洁而没有显示的查询方法。
利用多个存储库的好做法是什么?
【问题讨论】:
-
我不明白为什么你会认为让多个类使用同一个实例有什么问题。你能解释一下你的担心吗?
-
取决于您的设计。例如,如果您遵循工作单元模式,那么您应该在同一上下文中完成该单元所需的所有“工作”,在这种情况下,您将共享相同的上下文。
-
主要是如果一个存储库处理了上下文,那么另一个存储库就不走运了。
标签: c# .net entity-framework repository-pattern