0

我有一个带有指定 TypeName 的数据注释属性的类。一切都按应有的方式工作。出于单元测试的目的,我想使用 SQL Compact 数据库而不是 sql server 数据库。但是 Sql Compact 不支持 XML 数据类型。他们建议您使用ntext. 问题是它根本不会影响我的实体,因为 xml 和ntextmap to type System.String。但是动态创建数据库很麻烦。基本上我想要TypeName="XML"连接到 SQL Server 和TypeName="ntext"连接到 SQL Compact 时。

public class TechnicalStructure
{
    [Column("StructureAttributes", TypeName = "xml")]
    public string StructureAttributes { get; set; }
}
4

1 回答 1

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");
}
于 2013-07-22T10:47:32.233 回答