Выбор пользователей и ролей в Entity Framework Core 3 - PullRequest
0 голосов
/ 26 мая 2020

Я меняю способ заполнения данных в моем приложении, используя ядро ​​всей инфраструктуры. До версии 2.1 нельзя было установить значение ключа идентификации, поэтому я начал переносить свой код, но теперь у меня проблема с заполнением пользователей и ролей из идентификатора. Как я могу получить доступ к userManager или RoleManager в моем файле DbContext или расширении modelbinder?

Вот как я набираю пользователей и роли с помощью класса и вставляю его в файл программы

        var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
        var isDevelopment = environment == Environments.Development;

        if (isDevelopment)
        {
            using var scope = host.Services.CreateScope();
            var services = scope.ServiceProvider;
            try
            {
                var context = services.GetRequiredService<ApplicationDbContext>();
                var roleManager = services.GetRequiredService<RoleManager<Role>>();
                var userManager = services.GetRequiredService<UserManager<User>>();
                await DbInitializer.Seed(context, userManager, roleManager);//<---Do your seeding here
            }
            catch (Exception ex)
            {
                Log.Error(ex, "An error occurred while seeding the database.");
            }
        }

теперь я хочу начать использовать это вместо версии 2.1

public static class ModelBuilderExtensions
{
    public static void Seed(this ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Author>().HasData(
            new Author
            {
                AuthorId = 1,
                FirstName = "William",
                LastName = "Shakespeare"
            }
        );
        modelBuilder.Entity<Book>().HasData(
            new Book { BookId = 1, AuthorId = 1, Title = "Hamlet" },
            new Book { BookId = 2, AuthorId = 1, Title = "King Lear" },
            new Book { BookId = 3, AuthorId = 1, Title = "Othello" }
        );
    }
}


protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Seed();
}

1 Ответ

1 голос
/ 27 мая 2020

Если вы унаследовали от IdentityDbContext, вы можете получить таблицу пользователей по

modelBuilder.Entity<Users>().HasData(
            new User
            {
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...