我正在迁移Asp.Net Core2.1Web应用程序中的代码优先域(初始创建)。
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):关键字“NOT”附近的语法不正确。
在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔断开连接,操作
1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction)
在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParser stateObj,Boolean callerHasConnectionLock,Boolean asyncClose)
注:
我删除了代码中的“filter:[NormalizedName]IS NOT NULL”“部分,但仍出现相同的错误
CreateIndex方法中的粗体非关键字(post中的第一个代码片段)是罪魁祸首。现在,我可以理解我是否编写了该代码,但这是从add迁移生成的代码。我不明白为什么这是错误的。