EF Core Seeding 机制不插入数据
Posted
技术标签:
【中文标题】EF Core Seeding 机制不插入数据【英文标题】:EF Core Seeding mechanism doesn't insert data 【发布时间】:2020-05-19 02:41:52 【问题描述】:我正在尝试使用 EntityFramework、In-Memory DB 和 DB 播种器创建一个 WCF 应用程序。但我被困住了。我不知道为什么这对 C# 来说是如此令人难以置信的麻烦。在 Java 中,这将是一个 10 分钟的任务,并且这个东西会运行。无论如何,这是我的 DBContext
代码:
public class AppDBContext : DbContext
private static readonly DbContextOptions options = new DbContextOptionsBuilder<AppDBContext>().UseInMemoryDatabase("INMEMO-DB").Options;
public AppDBContext() : base(options)
public DbSet<Notification> Notifications get; set;
protected override void OnModelCreating(ModelBuilder modelBuilder)
modelBuilder.Entity<Notification>().HasData(
new Notification
Id = 1
,
new Notification
Id = 2
,
new Notification
Id = 3
);
base.OnModelCreating(modelBuilder);
如您所见,我正在使用OnModelCreating
方法将数据播种到我的数据库中。该方法被调用,但不会插入任何数据。我做错了什么?
我对这个 C# 东西已经没有耐心了..
【问题讨论】:
你需要调用Database.EnsureCreated()
方法。 docs.microsoft.com/en-us/ef/core/modeling/data-seeding
是的,很好,就是这样......发布它作为答案,我会接受它。
【参考方案1】:
HasData
方法仅将实体配置为具有种子数据。
要真正播种数据库,您需要调用
Database.EnsureCreated();
请注意,这仅适用于数据库尚不存在(作为内存数据库)的情况,因为 EnsureCreated
否则不会执行任何操作。
对于现有数据库,您需要创建和应用迁移。
供参考:Data Seeding
【讨论】:
以上是关于EF Core Seeding 机制不插入数据的主要内容,如果未能解决你的问题,请参考以下文章
EF Core - 在数据库中按顺序插入记录,PK 上没有标识