Как отключить сначала создание кода миграции EF по умолчанию ⇐ C#
-
Anonymous
Как отключить сначала создание кода миграции EF по умолчанию
Я использую подход EF Core 6 Code First. Когда я определяю новую сущность с обязательным полем, миграция EF создает для этого всегда пустое ограничение по умолчанию, как здесь:
migrationBuilder.AlterColumn( имя: «Идентификатор Тенанта», таблица: «Сайты», тип: «уникальныйидентификатор», обнуляемый: ложь, defaultValue: new Guid("00000000-0000-0000-0000-000000000000"), // ненужное ограничение по умолчанию oldClrType: typeof (Guid), oldType: «уникальныйидентификатор», oldNullable: правда); В большинстве случаев я не хочу иметь никакое значение по умолчанию. Я пытался отключить это поведение с помощью такой конфигурации модели, но это не дало никакого эффекта:
builder.Property(cc => cc.TenantId).HasDefaultValue(null); builder.Property(cc => cc.TenantId).HasDefaultValueSql(null); Я использую эту команду для создания миграций:
миграции dotnet ef add --context:DataContext --project "xxx" xxxx Мне не удалось найти ни одного вопроса по SO для этой конкретной проблемы, но есть много похожих вопросов, ведущих к одному ответу: просто обновите сгенерированные скрипты вручную.
Мне это кажется странным. Пока что я ни разу не обновлял скрипты вручную, думаю ручное обновление скрипта приведет к несоответствию кода и схемы БД. Если можно изменить сценарий вручную, не могли бы вы объяснить, почему это не проблема и почему мне не следует волноваться?
большое спасибо!
дополнительная информация:
// Типы, допускающие значение NULL, не включены Сайт общественного класса { общественный арендатор арендатор { get; набор; } общедоступный Guid TenantId {get; набор; } общедоступный идентификатор Guid {get; набор; } ... } Арендатор общественного класса { общедоступный идентификатор Guid {get; набор; } ... } общедоступный класс SiteEntityTypeConfiguration: IEntityTypeConfiguration { public void Configure (строитель EntityTypeBuilder) { builder.HasOne(cc => cc.Tenant) .Со многими() .OnDelete(DeleteBehavior.Restrict); } }
Я использую подход EF Core 6 Code First. Когда я определяю новую сущность с обязательным полем, миграция EF создает для этого всегда пустое ограничение по умолчанию, как здесь:
migrationBuilder.AlterColumn( имя: «Идентификатор Тенанта», таблица: «Сайты», тип: «уникальныйидентификатор», обнуляемый: ложь, defaultValue: new Guid("00000000-0000-0000-0000-000000000000"), // ненужное ограничение по умолчанию oldClrType: typeof (Guid), oldType: «уникальныйидентификатор», oldNullable: правда); В большинстве случаев я не хочу иметь никакое значение по умолчанию. Я пытался отключить это поведение с помощью такой конфигурации модели, но это не дало никакого эффекта:
builder.Property(cc => cc.TenantId).HasDefaultValue(null); builder.Property(cc => cc.TenantId).HasDefaultValueSql(null); Я использую эту команду для создания миграций:
миграции dotnet ef add --context:DataContext --project "xxx" xxxx Мне не удалось найти ни одного вопроса по SO для этой конкретной проблемы, но есть много похожих вопросов, ведущих к одному ответу: просто обновите сгенерированные скрипты вручную.
Мне это кажется странным. Пока что я ни разу не обновлял скрипты вручную, думаю ручное обновление скрипта приведет к несоответствию кода и схемы БД. Если можно изменить сценарий вручную, не могли бы вы объяснить, почему это не проблема и почему мне не следует волноваться?
большое спасибо!
дополнительная информация:
// Типы, допускающие значение NULL, не включены Сайт общественного класса { общественный арендатор арендатор { get; набор; } общедоступный Guid TenantId {get; набор; } общедоступный идентификатор Guid {get; набор; } ... } Арендатор общественного класса { общедоступный идентификатор Guid {get; набор; } ... } общедоступный класс SiteEntityTypeConfiguration: IEntityTypeConfiguration { public void Configure (строитель EntityTypeBuilder) { builder.HasOne(cc => cc.Tenant) .Со многими() .OnDelete(DeleteBehavior.Restrict); } }
Мобильная версия