2008-12-04 58 views
3

是否有与LINQ to SQL的OnCreated partial相当的EF?Entity Framework中的Hook对象加载事件?

我的一些对象有XML字段,我想分析每当从db加载对象 - 我想把XML数据放入更友好的强类型集合。我已经将XML字段标记为private,并在将项目提交回数据库之前挂钩了SavingChanges事件以重新构建XML,但我无法弄清楚如何在加载对象时填充集合。

我想过为我的XML字段使用OnFieldChanged partial,但是当SavingChanges期间重新构建XML字段时,它会再次运行,所以看起来应该有更好的方法。

回答

2

据我所知,没有OnLoaded事件或类似事件。一种解决方法可能是暴露的集合作为属性和懒洋洋地创建/解析上首次访问值:

private List<SomeData> _parsedDataCache; 
public IList<SomeData> ParsedData { 
    get { 
     if (_parsedDataCache == null) 
      ParseData(); 
     return _parsedDataCache; 
    } 
} 
+0

ObjectContext.ObjectMaterialized事件我已经这样做了几场。我倾向于把一个通用的[数据] NVARCHAR(MAX)字段对我这样的扩展所有表。 。然后我有一个void SetData(action runner)方法。这允许上下文从字符串(缓存)转换为基本XElement,然后在...之后更新...我还通过SavingChanges连接到调用私有无效BeforeSave()方法,如果它存在于实体的部分...作品整体相当不错。 – Tracker1 2011-10-14 17:21:43

-2

您应该创建一个部分类(如你在LINQ做SQL),并只使用默认的构造函数。

+0

这不起作用。 XML字段值在构建时尚未设置。 – 2011-08-04 12:13:06

3

或使用.NET 4.0

相关问题