var query = from o in db.Gettable<Order>() //db is the datacontext select o;foreach(Order o in query){ foreach(OrderDetail d in o.OrderDetails)//Deferred loading { //Do something on these collections }}
OrderDetails仅在迭代时加载,因此如果从不迭代OrderDetatils,则永远不会执行相应的查询.
> Eager Loading:立即加载所有引用实体的关联集合,例如liNQ to sql将自动为所有已检索的订单带来所有OrderDetails
DataLoadOptions op = new DataLoadOptions();op.LoaDWith<Order>(o => o.OrderDetails);db.LoadOptions = op;var query = from o in db.Gettable<Order>() select o;foreach(Order o in query){ //Order details are eager loaded; additional querIEs are not needed foreach(OrderDetail d in o.OrderDetails) { //do something }}
请注意:延迟执行是liNQ功能,但延迟加载是liNQ to sql功能
总结以上是内存溢出为你收集整理的c# – linq2sql中的简单Eager / Lazy加载示例全部内容,希望文章能够帮你解决c# – linq2sql中的简单Eager / Lazy加载示例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)