将Datacontext设置为存储库中的属性是否可以?

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)

fli*_*ubt 5

根据我的阅读,使用DataContext" 进行多个业务对话通常是错误的做法." 向下滚动到为什么这很重要?报价部分.由于缓存和其他因素,您应该立即考虑您的DataContext陈旧.由此可以肯定地说,您不希望将DataContext保留为所有方法都重用的属性.使用Eric Duncan的建议,您将需要传递某种DataContext工厂来为每个查询获取新的上下文.

对于专注于DataContext的讨论,APress Pro LINQ书中有一关于DataContext,最后一页还建议你"立即考虑DataContext陈旧".