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
- 在方法中查找MyEFEntity
到DbContext.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?