我正在尝试使用EntityFramework,内存数据库和数据库种子创建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#stuf的耐心已经耗尽。
答案 0 :(得分:1)
HasData
方法仅将实体配置为具有种子数据。
要真正播种数据库,您需要调用
Database.EnsureCreated();
请注意,这仅适用于数据库不存在(例如内存数据库)的情况,因为EnsureCreated
不会执行其他操作。
对于现有数据库,您需要创建和应用迁移。
以供参考:Data Seeding