LINQ to SQL:对延​​迟加载的关联进行加载处理

Mat*_*mes 7 .net c# linq-to-sql

如果我有一个延迟加载与非常大的对象的关联的对象,有没有办法在延迟加载时进行处理?我以为我可以使用DataLoadOptions中的AssociateWith或LoadWith,但是对于你可以在那些中做什么有非常非常具体的限制.基本上我需要在EntitySet <>决定加载关联对象的时候得到通知,所以我可以捕获该事件并对加载的对象进行一些处理.我不想在加载父对象时简单地遍历EntitySet,因为这将强制加载所有延迟加载的项目(完全失去延迟加载的目的).

小智 2

订阅 ListChanged 事件

EntitySet<T> 公开一个名为 ListChanged 的​​事件,您可以使用该事件来检测是否正在添加项目。评估 ListChangedEventArgs 的 ListChangedType 属性。以下是 ListChangedType 枚举中可用值的链接。

只要避免请求枚举器,就不会存在强制执行加载的危险。

http://msdn.microsoft.com/en-us/library/system.componentmodel.listchangedtype.aspx