【问题标题】:EF Core Seeding mechanism doesn't insert dataEF Core Seeding 机制不插入数据
【发布时间】: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# 东西已经没有耐心了..

【问题讨论】:

标签: c# entity-framework wcf


【解决方案1】:

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

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

Database.EnsureCreated();

请注意,这仅适用于数据库尚不存在(作为内存数据库)的情况,因为 EnsureCreated 否则不会执行任何操作。

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

供参考:Data Seeding

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-29
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    相关资源
    最近更新 更多