Entity Framework 5 和 XElement 字段

Posted

技术标签:

【中文标题】Entity Framework 5 和 XElement 字段【英文标题】:Entity Framework 5 and XElement fields 【发布时间】: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; 

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

谢谢,这行得通。我只是希望有一种更优雅的方式来做到这一点。我可能会研究一种使用属性和自定义DbContext 更干净地执行此操作的方法。如果只有 MS 会开源 EF。 :)

以上是关于Entity Framework 5 和 XElement 字段的主要内容,如果未能解决你的问题,请参考以下文章

Cosmos 的 .NET 5 和 Entity Framework Core (5.0.1) 迁移问题

Entity Framework 5.0 Code First全面学习

转:Entity Framework 5.0 Code First全面学习

如何在 Entity Framework 5 中使用 SQL Server OFFSET 和 FETCH FIRST?

NHibernate vs Entity Framework 5 自动连接实体

Entity Framework 5/6 中的可更新视图