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();
какая глупая проблема... но хорошо.