Электроинструменты EF Core генерируют обнуляемое логическое значение - PullRequest
1 голос
/ 26 февраля 2020

Я использую EF Core Power Tools версию 2.4.0 с Miccrosoft.EntifyFrameworkCore.SqlServer версией 2.2.6

У меня SQL столбец таблицы IsActive определен как [IsActive] [bit] NOT NULL
Я использую EF Core Power Инструмент обратного инжиниринга для создания сущностей и контекста БД.

ISSUE
Инструмент генерирует нулевое логическое свойство вместо просто логическое

public bool? IsActive { get; set; }

соответствующий метод OnModelCreating DBContext

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

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

}

1 Ответ

0 голосов
/ 26 февраля 2020

EF Core использует значение по умолчанию CLR, чтобы определить, следует ли использовать SQL по умолчанию.

С нулевым значением:

  • null ➡ 1 (через DEFAULT)
  • false ➡ 0
  • true ➡ 1

Без значения Nullable:

  • false ➡ 1 (через DEFAULT)
  • true ➡ 1

Без значения nullable было бы невозможно вставить 0!

Другой вариант - просто удалить HasDefaultValueSql и использовать ненулевое значение:

  • false ➡ 0
  • true ➡ 1
...