【问题标题】:Entity Framework 5 and XElement fieldsEntity Framework 5 和 XElement 字段
【发布时间】:2012-06-09 21:09:24
【问题描述】:

开始使用 Visual Studio 2012 RC 和 Entity Framework 5...绝对喜欢它,但想知道是否有 更清洁 的方法来做到这一点。

我想省去每次解析 XML 的中间人,并通过 .ToString() 设置它

public class MyEFEntity
{
    [NotMapped()]
    public XElement Tags { 
        get { return XElement.Parse(tags); } 
        set { tags = value.ToString(); } }

    [Column("Tags", TypeName = "xml"), Required]
    public string tags { get; set; }
}

【问题讨论】:

    标签: c# xml entity-framework xelement entity-framework-5


    【解决方案1】:

    原则上没有更好的方法。您需要两个属性 - 一个用于 XElement,另一个用于支持持久字符串。如果你想减少解析和转换的数量,你需要为此实现一些基础设施。一般的做法是:

    • 处理ObjectContext.ObjectMaterialized事件-如果物化对象是MyEFEntity,则解析字符串并将其保存到XElement属性。如果您使用的是DbContext,您仍然可以通过其显式实现的IObjectContextAdapter 获得ObjectContext
    • 覆盖SaveChanges - 在方法中查找MyEFEntityDbContext.ChangeTracker.GetEntries 的所有修改或插入的实例,并将它们的XML 保存到字符串属性

    【讨论】:

    • 谢谢,这行得通。我只是希望有一种更优雅的方式来做到这一点。我可能会研究一种使用属性和自定义DbContext 更干净地执行此操作的方法。如果只有 MS 会开源 EF。 :)
    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 2012-12-28
    相关资源
    最近更新 更多