Entity Framework Core:列、参数或变量 #4:找不到数据类型 bool
Posted
技术标签:
【中文标题】Entity Framework Core:列、参数或变量 #4:找不到数据类型 bool【英文标题】:Entity Framework Core: Column, parameter, or variable #4: Cannot find data type bool 【发布时间】:2020-12-09 17:38:50 【问题描述】:我对这个问题有点困惑,尽管它是不言自明的。我确实尝试将数据类型从 bool 更改为 bit,但是,bit 数据类型呈现白色并且有红色波浪。您会在下面找到我的代码,其中数据类型已更改为位。注意,这是在我运行 add-migration 命令并查看迁移代码之后。
migrationBuilder.CreateTable(
name: "AspNetUsers",
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<bit>(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<bit>(nullable: false),
TwoFactorEnabled = table.Column<bit>(nullable: false),
LockoutEnd = table.Column<DateTimeOffset>(nullable: true),
LockoutEnabled = table.Column<bit>(nullable: false),
AccessFailedCount = table.Column<int>(nullable: false),
FirstName = table.Column<string>(nullable: true),
LastName = table.Column<string>(nullable: true)
,
【问题讨论】:
【参考方案1】:使用 Entity Framework Core 时请查看mapping between C# data type to SQL Server column data type。
C# bool
类型将映射到 SQL Server bit
类型。因此,在 C# 中,我们必须使用 bool
类型,而不是 bit
类型,但您可以将 type 属性设置为 bit
。像这样的代码:
migrationBuilder.CreateTable(
name: "TestTables",
columns: table => new
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column<string>(type: "nvarchar(max)", nullable: true),
Email = table.Column<string>(type: "nvarchar(max)", nullable: true),
EmailConfirmed = table.Column<bool>(type: "bit", nullable: false),
LockoutEnd = table.Column<DateTime>(type: "datetime2", nullable: false),
LockoutEnabled = table.Column<bool>(type: "bit", nullable: false)
,
constraints: table =>
table.PrimaryKey("PK_TestTables", x => x.Id);
);
SQL server 数据库结果如下:
【讨论】:
非常感谢您的帮助和对我收到的错误的详细解释。我会确保将此标记为已接受的答案。我之前遇到过这个错误,但是我不记得问题是什么了。再次感谢您的澄清。以上是关于Entity Framework Core:列、参数或变量 #4:找不到数据类型 bool的主要内容,如果未能解决你的问题,请参考以下文章
一列用于 Entity Framework Core 中两个不同表的外键
在 Entity Framework Core 中为 PostgreSQL 表的计算列设置公式
Entity Framework Core:将可空列迁移到必需时的默认值