Механизм EF Core Seeding не вставляет данные - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь создать приложение WCF с EntityFramework, In-Memory DB и сеялкой DB. Но я застрял. Я не знаю, почему это так невероятно неприятно с 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 Ответ

1 голос
/ 03 февраля 2020

Метод HasData только настраивает сущность на получение начальных данных.

Для фактического заполнения базы данных вам нужно вызвать

Database.EnsureCreated();

Обратите внимание, что это применимо только в том случае, если базы данных не уже существует (как БД In-Memory), так как EnsureCreated ничего не делает иначе.

Для существующей базы данных вам необходимо создать и применить миграции.

Для справки: Данные Посев

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...