实体框架中的Hook对象加载事件?

时间:2008-12-04 16:11:43

标签: .net entity-framework ado.net

是否存在与LINQ to SQL的OnCreated部分相当的EF?

我的几个对象都有XML字段,我想在从db加载对象时解析它 - 我想把XML数据放到更友好的强类型集合中。我已经将XML字段标记为私有,并在将项目提交回数据库之前挂钩了SavingChanges事件以重新构建XML,但是无论何时加载对象,我都无法弄清楚如何填充集合。 / p>

我已经考虑过在我的XML字段中使用OnFieldChanged partial,但是只要在SavingChanges中重新构建XML字段,它就会再次运行,所以看起来应该有更好的方法。

3 个答案:

答案 0 :(得分:3)

或者在.net 4.0中使用ObjectContext.ObjectMaterialized事件

答案 1 :(得分:2)

据我所知,没有OnLoaded事件或类似事件。解决方法可能是将集合公开为属性,并在第一次访问时懒惰地创建/解析值:

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

答案 2 :(得分:-2)

您应该创建一个部分类(就像在LINQ to SQL中那样)并且只使用默认构造函数。