zsh*_*arp 3 datacontext domain-driven-design repository-pattern
将datacontext设置为属性是否存在任何潜在问题:
知识库
public Repository()
{
public DataContext dc {get;set;}
public GetOrders(int id)
{ ...from dc.Orders...}
}
Run Code Online (Sandbox Code Playgroud)
服务层:
public GetNewOrders()
{
....
Repository rep=new Repository();
using {DataContext dc=new DataContext())
{
rep.dc=dc;
rep.GetOrders(id);
}
}
Run Code Online (Sandbox Code Playgroud)
根据我的阅读,使用DataContext" 进行多个业务对话通常是错误的做法." 向下滚动到为什么这很重要?报价部分.由于缓存和其他因素,您应该立即考虑您的DataContext陈旧.由此可以肯定地说,您不希望将DataContext保留为所有方法都重用的属性.使用Eric Duncan的建议,您将需要传递某种DataContext工厂来为每个查询获取新的上下文.
对于专注于DataContext的讨论,APress Pro LINQ书中有一章关于DataContext,最后一页还建议你"立即考虑DataContext陈旧".