Как отключить сначала создание кода миграции EF по умолчаниюC#

Место общения программистов C#
Ответить
Anonymous
 Как отключить сначала создание кода миграции EF по умолчанию

Сообщение Anonymous »


Я использую подход 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); } }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»