FluentMigrator NotSupportedException - 映射XML列

时间:2015-02-27 15:30:49

标签: xml migration notsupportedexception

我在项目中使用FluentMigrator,当我尝试在现有表格中添加新的xml列时,我在数据库中更新时遇到了一些问题。

我正在使用:

  • FluentMigrator 1.3.1.0
  • FluentMigrator.Tools 1.3.1.0
  • SQL Server 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()
    {

    }
}

但是,当我运行此代码时,我得到了这个例外:

  

异常详细信息:System.NotSupportedException:不支持的DbType' Xml'

Line 15:             try
Line 16:             {
Line 17:                 base.ApplyMigrationUp(migrationInfo, useTransaction);
Line 18:             }
Line 19:             catch (Exception e)

有人遇到过这个问题或知道出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

问题是:我试图用这个来指定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();

什么是愚蠢的问题......但是好的。