FluentMigrator NotSupportedException - сопоставление столбца XML

Я использую 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 ответ

Решение

Проблема была: я пытался указать максимальную длину 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();

какая глупая проблема... но хорошо.

Другие вопросы по тегам