3

我正在使用带有EF Core Power Tools版本的版本2.4.0Miccrosoft.EntifyFrameworkCore.SqlServer2.2.6

IsActive定义了 SQL 表列,因为[IsActive] [bit] NOT NULL
我使用 EF Core Power Tool 的逆向工程来生成实体和数据库上下文。

ISSUE
该工具生成可为空的布尔属性,而不仅仅是布尔

public bool? IsActive { get; set; }

对应 DBContext 的 OnModelCreating 方法

modelBuilder.Entity<Scenario>(entity =>
            {
                entity.Property(e => e.ScenarioID).HasColumnName("ScenarioID");

                entity.Property(e => e.IsActive)
                    .IsRequired()
                    .HasDefaultValueSql("((1))");

}
4

2 回答 2

2

EF Core 使用 CLR 默认值来确定是否使用 SQL 默认值。

可以为空:

  • 空➡ 1(通过默认)
  • 假➡0
  • 真的 ➡ 1

没有可为空的:

  • 假➡ 1(通过默认)
  • 真的 ➡ 1

如果没有可为空,就无法插入0!

另一种选择是仅删除HasDefaultValueSql并使用不可为空的:

  • 假➡0
  • 真的 ➡ 1
于 2020-02-26T18:25:51.597 回答
2

您可以在最新版本的 EF Core Power Tools 中禁用此行为,因此默认值将被忽略

于 2021-05-11T14:08:07.080 回答