我想知道在执行 LINQ to ADO.net 数据服务查询时是否有任何替代方法可以使用 Expand 关键字。expand 方法确实为我提供了我感兴趣的数据,但它要求我提前了解我将要使用的所有子对象。我的绝对偏好是,当我访问这些子对象时,它们会为我延迟加载,但这看起来不是一个选项(我可以将此延迟加载添加到该子对象属性的 get 中,但它当我更新数据服务引用时被清除)。
有没有人对这种情况有任何建议/最佳实践/替代方案?谢谢。
===== 使用具有 MailingAddress 的成员的示例代码 =====
作品:
var me = (from m in ctx.Member.Expand("MailingAddress")
where m.MemberID == 10000
select m).First();
MessageBox.Show(me.MailingAddress.Street);
会更喜欢(如果这然后加载MailingAddress,真的很喜欢)
var me = (from m in ctx.Member
where m.MemberID == 10000
select m).First();
MessageBox.Show(me.MailingAddress.Street);
或者至少(注意:如果我在服务操作中作为 LINQ to Entities 这样做,则与 MailingAddressReference 类似的东西在服务器端工作)
var me = (from m in ctx.Member
where m.MemberID == 10000
select m).First();
if (!(me.MailingAddress.IsLoaded())) me.MailingAddress.Load()
MessageBox.Show(me.MailingAddress.Street);