Способ посева в настоящее время устарел. Если вы обрабатываете заполнение как , то вы должны , а затем вставлять, обновлять и т. Д. c. из начальных данных обрабатываются автоматически EF Core. Теперь это делается с помощью свободной конфигурации в OnModelCreating
в вашем контексте:
modelBuilder.Entity<RfReportStateType>().HasData(
new RfReportStateType { Id = 4, Name = "Draft" },
new RfReportStateType { Id = 3, Name = "Review" },
new RfReportStateType { Id = 2, Name = "Stage" },
new RfReportStateType { Id = 1, Name = "Prod" }
);
Несколько замечаний. Во-первых, вы должны включить идентификатор. Это значит, что EF Core знает, какие элементы вставлять, обновлять или удалять. Новые идентификаторы будут вставлены, удаленные идентификаторы будут удалены, а все существующие будут обновлены. Это также позволяет создавать отношения и тому подобное, поскольку идентификаторы известны. Во-вторых, такие вещи, как UpdatedOn
, должны обрабатываться через автоматически сгенерированное значение , а не указываться в начальных данных, так как в противном случае оно будет запускать обновление при каждом запуске, поскольку DateTime.Now
всегда будет отличаться Один бег к другому. Таким образом, вы также можете указать, должен ли он генерироваться только при добавлении или обновлении, что делает его идеальным для таких вещей, как даты создания / обновления. Как правило, ваши начальные данные должны содержать только значения stati c, поэтому обновления запускаются только при конкретном изменении одного из этих значений. В-третьих, вы можете включить UpdatedBy
, если хотите, но это, вероятно, будет лучше обрабатываться значением по умолчанию в столбце, т. Е. Это SYSTEM
, если не передано что-то более конкретное c.