我想使用SQL Server xml 类型作为实体类的列类型 .
根据this thread,可以将这样的列映射到 string 类型:
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的键 .
3 回答
问题在于我的包装器属性:
我没有指定 NotMapped 属性 .
只是为了完整 . 这是一部分所需的所有代码 .
如果您想使用Fluent API(并使用映射类),那么您就可以在Data Annotations中执行此操作了:
如果您通过覆盖DbContext上的OnModelCreating来使用Fluent API,那么只需使用modelBuilder.Entity <XmlEntity>()更改那些“this”