[英]XML data type in EF 4.1 Code First
我想使用SQL Server xml类型作为实体类的列类型。
根据这个线程 ,可以将这样的列映射到字符串类型:
public class XmlEntity
{
public int Id { get; set; }
[Column(TypeName="xml")]
public string XmlValue { get; set; }
}
该定义在数据库中正确生成了该表。 也可以创建新的XmlEntity对象。
但后来我尝试从数据库中获取一些实体:
var entity = db.XmlEntities.Where(e => e.Id == 1).FirstOrDefault();
发生错误:
模型生成 System.Data.Edm.EdmEntityType 中检测到一个或多个验证错误 :的EntityType“ 的XElement”没有定义键。 定义此EntityType的键。
问题在于我的包装器属性:
[NotMapped]
public XElement XmlValueWrapper
{
get { return XElement.Parse(XmlValue); }
set { XmlValue = value.ToString(); }
}
我没有指定NotMapped属性。
只是为了完整。 这是一部分所需的所有代码。
[Column(TypeName = "xml")]
public String XmlContent { get; set; }
[NotMapped]
public XElement InitializedXmlContent
{
get { return XElement.Parse(XmlContent); }
set { XmlContent = value.ToString(); }
}
如果您想使用Fluent API(并使用映射类),那么您就可以在Data Annotations中执行此操作了:
public partial class XmlEntityMap : EntityTypeConfiguration<XmlEntity>
{
public FilterMap()
{
// ...
this.Property(c => c.XmlContent).HasColumnType("xml");
this.Ignore(c => c.XmlValueWrapper);
}
}
如果您通过覆盖DbContext上的OnModelCreating来使用Fluent API,那么只需使用modelBuilder.Entity <XmlEntity>()更改那些“this”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.