EF核心种子机制不插入数据

时间:2020-02-03 10:43:28

标签: c# entity-framework wcf

我正在尝试使用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的耐心已经耗尽。

1 个答案:

答案 0 :(得分:1)

HasData方法仅将实体配置为具有种子数据。

要真正播种数据库,您需要调用

Database.EnsureCreated();

请注意,这仅适用于数据库不存在(例如内存数据库)的情况,因为EnsureCreated不会执行其他操作。

对于现有数据库,您需要创建和应用迁移。

以供参考:Data Seeding