Ошибка ключевого слова NOT в обновлении базы данных из миграции SQL из веб-приложения Asp.Net Core 2.1 - PullRequest
0 голосов
/ 28 ноября 2018

Я мигрирую первый домен кода (первоначальное создание) в веб-приложении Asp.Net Core 2.1.

Команда add-migration создала следующий код (для краткости удаленные части не удалены)

migrationBuilder.CreateIndex(
        name: "RoleNameIndex",
        schema: "BatlCtx",
        table: "AspNetRoles",
        column: "NormalizedName",
        unique: true,
        filter: "[NormalizedName] IS **NOT** NULL");

migrationBuilder.CreateIndex(
        name: "UserNameIndex",
        schema: "BatlCtx",
        table: "AspNetUsers",
        column: "NormalizedUserName",
        unique: true,
        filter: "[NormalizedUserName] IS **NOT** NULL");

Вот код из миграции для создания таблицы

migrationBuilder.CreateTable(
        name: "AspNetUsers",
        schema: "BatlCtx",
        columns: table => new
        {
            Id = table.Column<string>(nullable: false),
            UserName = table.Column<string>(maxLength: 256, nullable: true),
            NormalizedUserName = table.Column<string>(maxLength: 256, nullable: true),
            Email = table.Column<string>(maxLength: 256, nullable: true),
            NormalizedEmail = table.Column<string>(maxLength: 256, nullable: true),
            EmailConfirmed = table.Column<bool>(nullable: false),
            PasswordHash = table.Column<string>(nullable: true),
            SecurityStamp = table.Column<string>(nullable: true),
            ConcurrencyStamp = table.Column<string>(nullable: true),
            PhoneNumber = table.Column<string>(nullable: true),
            PhoneNumberConfirmed = table.Column<bool>(nullable: false),
            TwoFactorEnabled = table.Column<bool>(nullable: false),
            LockoutEnd = table.Column<DateTimeOffset>(nullable: true),
            LockoutEnabled = table.Column<bool>(nullable: false),
            AccessFailedCount = table.Column<int>(nullable: false),
            FirstName = table.Column<string>(maxLength: 50, nullable: false),
            LastName = table.Column<string>(maxLength: 80, nullable: false),
            Gender = table.Column<int>(nullable: false),
            MobilePhone = table.Column<string>(maxLength: 24, nullable: false),
            DateOfBirth = table.Column<DateTime>(nullable: false),
            UserPicture = table.Column<byte[]>(nullable: true),
            TimesLoggedIn = table.Column<int>(nullable: false)
            },
        constraints: table =>
        {
            table.PrimaryKey("PK_AspNetUsers", x => x.Id);
        });

При попытке обновления базы данных в первый раз возникает эта ошибка

System.Data.SqlClient.SqlException (0x80131904): неправильный синтаксис рядом с ключевым словом «НЕ».в System.Data.SqlClient.SqlConnection.OnError (исключение SqlException, логическое breakConnection, действие 1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject BooleClaySlaySignSlayOneBlocksOneLockOneLockLockOll)1014 * Я удалил часть кода "filter:" [NormalizedName] IS NOT NULL "", но я все еще получаю ту же ошибку

Ключевые слова NOT в методах CreateIndex (первый код выделен жирным шрифтом)фрагмент в посте) виновник.Теперь я могу понять, написал ли я этот код, но это сгенерированный код из адд-миграции.Я не понимаю, почему это ошибка.

1 Ответ

0 голосов
/ 28 ноября 2018

Пожалуйста, пройдите через это Пост

Вы можете удалить фильтр и запустить update-database.Как ниже:

migrationBuilder.CreateIndex(
    name: "RoleNameIndex",
    schema: "BatlCtx",
    table: "AspNetRoles",
    column: "NormalizedName",
    unique: true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...