我有一个带有TypeName Specified的数据注释属性的类。一切都完全正常。对于单元测试目的,我想使用SQL Compact数据库而不是sql server数据库。但是,Sql Compact不支持XML数据类型。他们建议您使用ntext
。因为xml和ntext
映射到System.String
类型,所以它根本不会影响我的实体。尽快创建数据库是一件麻烦事。基本上我想在连接到SQL Server时TypeName="XML"
和连接到SQL Compact时TypeName="ntext"
。
public class TechnicalStructure
{
[Column("StructureAttributes", TypeName = "xml")]
public string StructureAttributes { get; set; }
}
答案 0 :(得分:0)
所以我找到了答案。我从受影响的类Property中删除了TypeName属性 - 属性,并覆盖了DbContext类中的OnModelCreate方法。在那里我指定了数据类型。这是一个代码示例:
if (IsInUnitTestMode)
{
modelBuilder.Entity<TechnicalStructure>()
.Property(x => x.StructureType)
.HasColumnType("nvarchar");
modelBuilder.Entity<TechnicalStructure>()
.Property(x => x.StructureAttributes)
.HasColumnType("ntext");
}
else
{
modelBuilder.Entity<TechnicalStructure>()
.Property(x => x.StructureType)
.HasColumnType("char");
modelBuilder.Entity<TechnicalStructure>()
.Property(x => x.StructureAttributes)
.HasColumnType("xml");
}