Базовые данные Entity Framework Core - PullRequest
0 голосов
/ 27 декабря 2018

Итак, у меня есть первая база данных Entity Framework Core и приложение .Net Core.

Я хочу добавить в него данные о посеве при создании базы данных.Я знаю, что у FluentAPI есть метод HasData, но это не то, что я ищу.

Когда база данных будет создана, я хочу создать пользователя со случайно сгенерированным паролем (который будет отличаться каждый раз), который будетсохраняется на файл на сервере.

Я не могу использовать метод HasData, потому что тогда он будет каждый раз создавать один и тот же пароль.

Поэтому мой вопрос: есть ли способ, кроме метода HasData, добавить данные Seedв базу данных Entity Framework Core Code First

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Создайте класс DataSeeder и вставьте в него DbContext.Напишите метод seedData для вставки необходимых данных.Это будет пользовательская логика.

Этот код можно запустить после создания базы данных.

public class DataSeeder
{
    public static void SeedRandomPassword(YourDbContext context)
    {
            //// your custom logic to generate random password 
            //// set it to right user


            context.Users.Add();  // Or Update depending on what you need
            context.SaveChanges();
        }
    }
}
0 голосов
/ 27 декабря 2018

Да!Есть выход!Вы можете сделать следующее:

public static class DatabaseInitializer
{
    public static void Initialize(YourDbContext dbContext)
    {
        dbContext.Database.EnsureCreated();
        if (!dbContext.Users.Any())
        {
            // Write you necessary to code here to insert the User to database and save the the information to file.

        }

    }
}

Метод Configure класса Startup в следующем порядке:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, YourDbContext dbContext)
{
   // other configurations
   ..............

   DatabaseInitializer.Initialize(dbContext);

   ..............
   // other configurations
}

Initialize метод будет вызываться только один раз в течениезапуск приложения.

...