Linq to sql LINQtoSQL、存储库模式和延迟加载
如何将LINQtoSQL与存储库模式结合使用 我是L2S新手,发现它的延迟加载是使用回购模式的真正障碍 通常,我认为存储库模式是这样的:Linq to sql LINQtoSQL、存储库模式和延迟加载,linq-to-sql,repository,repository-pattern,Linq To Sql,Repository,Repository Pattern,如何将LINQtoSQL与存储库模式结合使用 我是L2S新手,发现它的延迟加载是使用回购模式的真正障碍 通常,我认为存储库模式是这样的: var myCustomer = null; using (var myRepo = new Repo()){ myCustomer = myRepo.GetCustomerForCustomerId(123); } if(myCustomer.Orders.Any()){ //do something } 问题是,当我的客户订单被询问时,L2
var myCustomer = null;
using (var myRepo = new Repo()){
myCustomer = myRepo.GetCustomerForCustomerId(123);
}
if(myCustomer.Orders.Any()){
//do something
}
问题是,当我的客户订单被询问时,L2S不会尝试建立数据连接吗?这不会导致不可预测的数据库访问问题吗
我的意思是,是的,我可以告诉我的repo验证repo内部的命令,确信我们的完整测试覆盖率可以验证开发人员从不调用我们没有显式加载的实体,但我宁愿放弃延迟加载/对象datacontext持久性
所以我有4个选择
Northwnd db=new Northwnd(@“c:\Northwnd.mdf”);
DataLoadOptions dlo=新的DataLoadOptions();
dlo.LoadWith(c=>c.Orders);
db.LoadOptions=dlo
您还可以使用来进一步自定义自动加载的行为。我不知道答案,但我的印象是L2S或任何其他语言层通常比解决问题更可怕。有些人(包括我自己)对不知道幕后发生的事情感到恼火。@vulkanino,只有没有使用L2S的人才能这样说。您更喜欢什么,原始SQL?是的,数据库存储过程中的原始SQL。程序源代码中没有sql代码。我承诺使用一些ORM工具。在过去使用过存储过程和SQL命令之后,我再也不会使用存储过程和SQL命令了。我只是想弄清楚L2S是否以及如何能够像我使用LLBLGenPro时那样控制我。
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Customer>(c => c.Orders);
db.LoadOptions = dlo