【问题标题】:Entity Framework Core: Column, parameter, or variable #4: Cannot find data type boolEntity Framework Core:列、参数或变量 #4:找不到数据类型 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)
            },

【问题讨论】:

    标签: c# asp.net-core entity-framework-core blazor


    【解决方案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 数据库结果如下:

    【讨论】:

    • 非常感谢您的帮助和对我收到的错误的详细解释。我会确保将此标记为已接受的答案。我之前遇到过这个错误,但是我不记得问题是什么了。再次感谢您的澄清。
    猜你喜欢
    • 2021-07-31
    • 2020-04-11
    • 2014-12-22
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多