LINQ to SQL:加载处理延迟加载的关联

如果我有一个懒惰的对象加载与非常大的对象的关联,有没有一种方法可以在延迟加载时进行处理? 我以为我可以使用DataLoadOptions中的AssociateWith或LoadWith,但是在这些方面你可以做什么有非常非常特殊的限制。 基本上我需要在EntitySet <>决定是时候加载关联对象时得到通知,所以我可以捕获该事件并对加载的对象执行一些处理。 当我加载父对象时,我不想简单地遍历EntitySet,因为这会强制加载所有惰性加载的项目(完全破坏延迟加载的目的)。


订阅ListChanged事件

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

只要您避免请求统计员,就没有强制执行加载的危险。

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


我没有看到任何可用的扩展点; 我唯一可以看到的是在FK实体中,每个单独的对象上都有一个创建方法,它从构造函数中被触发。

所以创建的构造函数调用,并且我个人并不是100%确定实体集合加载在当时创建每个单独的对象,并触发事件...

HTH。


Linq2SQL生成的数据上下文和数据类有很多内置的可扩展性方法。

http://msdn.microsoft.com/en-us/library/bb882671.aspx

http://csainty.blogspot.com/2008/01/linq-to-sql-extending-data-classes.html

这些都可以满足您的需要。

链接地址: http://www.djcxy.com/p/45545.html

上一篇: LINQ to SQL: On load processing of lazy loaded associations

下一篇: Node.JS textract read file stream stored in SQL Server