Базовые данные Entity Framework Core

2

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

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

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

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

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

Теги:
.net-core
entity-framework-core

2 ответа

2
Лучший ответ

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

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 будет вызываться только один раз при запуске приложения.

  • 1
    Я не видел нигде упомянутого ядра ASP.NET.
  • 0
    @Imantas не понял ваш комментарий!
Показать ещё 6 комментариев
0

Создайте класс 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();
        }
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню