FluentMigrator NotSupportedException - 映射 XML 列
FluentMigrator NotSupportedException - Mapping XML Column
我在项目中使用 FluentMigrator,当我尝试在现有 table.[=14 中添加新的 xml 列时,我在更新数据库时遇到了一些问题=]
我正在使用:
- FluentMigrator 1.3.1.0
- FluentMigrator.Tools 1.3.1.0
- SQL 服务器 2014
- .Net Framework 4.5
迁移器是使用 SqlServer2012ProcessorFactory 配置的。
在我的一次迁移中,我有以下代码:
[Migration(201502271030)]
public class _201502271030_AddLineItemAndSummariesColumn : Migration
{
public override void Up()
{
Create.Column("InitialDiscount").OnTable("LineItems").InSchema(Const.Schema.DeskReview)
.AsDecimal(11, 2).Nullable().WithDefaultValue(false);
Create.Column("AcceptedDiscount").OnTable("LineItems").InSchema(Const.Schema.DeskReview)
.AsDecimal(11, 2).Nullable().WithDefaultValue(false);
Create.Column("BodyshopName").OnTable("LineItems").InSchema(Const.Schema.DeskReview)
.AsString(Const.Length.Name).Nullable().WithDefaultValue(false);
Create.Column("State").OnTable("LineItems").InSchema(Const.Schema.DeskReview)
.AsString(Const.Length.Name).Nullable().WithDefaultValue(false);
Create.Column("City").OnTable("LineItems").InSchema(Const.Schema.DeskReview)
.AsString(Const.Length.Name).Nullable().WithDefaultValue(false);
Create.Column("ExternalDataXml").OnTable("WorkQueueItems").InSchema(Const.Schema.DeskReview)
.AsXml(int.MaxValue).Nullable().WithDefaultValue(false);
Create.Column("Version").OnTable("WorkQueueItems").InSchema(Const.Schema.DeskReview)
.AsInt32().Nullable().WithDefaultValue(0);
}
public override void Down()
{
}
}
但是,当我 运行 这段代码时,我得到了这个异常:
Exception Details: System.NotSupportedException: Unsupported DbType 'Xml'
Line 15: try
Line 16: {
Line 17: base.ApplyMigrationUp(migrationInfo, useTransaction);
Line 18: }
Line 19: catch (Exception e)
有人遇到过这个问题或知道哪里出了问题吗?
问题是:我试图用这个指定 XML 最大长度:
.AsXml(int.MaxValue)
于:
Create.Column("ExternalDataXml").OnTable("WorkQueueItems").InSchema(Const.Schema.DeskReview)
.AsXml(int.MaxValue).Nullable().WithDefaultValue(false);
我刚刚删除了参数并且它起作用了。
所以,代码保持这样:
Create.Column("ExternalDataXml").OnTable("WorkQueueItems").InSchema(Const.Schema.DeskReview)
.AsXml().Nullable();
多么愚蠢的问题...但是没关系。
我在项目中使用 FluentMigrator,当我尝试在现有 table.[=14 中添加新的 xml 列时,我在更新数据库时遇到了一些问题=]
我正在使用:
- FluentMigrator 1.3.1.0
- FluentMigrator.Tools 1.3.1.0
- SQL 服务器 2014
- .Net Framework 4.5
迁移器是使用 SqlServer2012ProcessorFactory 配置的。
在我的一次迁移中,我有以下代码:
[Migration(201502271030)]
public class _201502271030_AddLineItemAndSummariesColumn : Migration
{
public override void Up()
{
Create.Column("InitialDiscount").OnTable("LineItems").InSchema(Const.Schema.DeskReview)
.AsDecimal(11, 2).Nullable().WithDefaultValue(false);
Create.Column("AcceptedDiscount").OnTable("LineItems").InSchema(Const.Schema.DeskReview)
.AsDecimal(11, 2).Nullable().WithDefaultValue(false);
Create.Column("BodyshopName").OnTable("LineItems").InSchema(Const.Schema.DeskReview)
.AsString(Const.Length.Name).Nullable().WithDefaultValue(false);
Create.Column("State").OnTable("LineItems").InSchema(Const.Schema.DeskReview)
.AsString(Const.Length.Name).Nullable().WithDefaultValue(false);
Create.Column("City").OnTable("LineItems").InSchema(Const.Schema.DeskReview)
.AsString(Const.Length.Name).Nullable().WithDefaultValue(false);
Create.Column("ExternalDataXml").OnTable("WorkQueueItems").InSchema(Const.Schema.DeskReview)
.AsXml(int.MaxValue).Nullable().WithDefaultValue(false);
Create.Column("Version").OnTable("WorkQueueItems").InSchema(Const.Schema.DeskReview)
.AsInt32().Nullable().WithDefaultValue(0);
}
public override void Down()
{
}
}
但是,当我 运行 这段代码时,我得到了这个异常:
Exception Details: System.NotSupportedException: Unsupported DbType 'Xml'
Line 15: try
Line 16: {
Line 17: base.ApplyMigrationUp(migrationInfo, useTransaction);
Line 18: }
Line 19: catch (Exception e)
有人遇到过这个问题或知道哪里出了问题吗?
问题是:我试图用这个指定 XML 最大长度:
.AsXml(int.MaxValue)
于:
Create.Column("ExternalDataXml").OnTable("WorkQueueItems").InSchema(Const.Schema.DeskReview)
.AsXml(int.MaxValue).Nullable().WithDefaultValue(false);
我刚刚删除了参数并且它起作用了。
所以,代码保持这样:
Create.Column("ExternalDataXml").OnTable("WorkQueueItems").InSchema(Const.Schema.DeskReview)
.AsXml().Nullable();
多么愚蠢的问题...但是没关系。