如何通过 ASP.NET MVC 中的迁移在 OnModelCreating() 中创建一个或多个用户?

问题描述 投票:0回答:1

假设我有一个标准的

WebApplication
将数据持久保存到远程数据库。通过逻辑分离,我有一个
DataAccess
类,该类当前正在
OnModelCreating()
中初始化一组自定义角色。

以同样的方法,我想为用户提供种子并为其分配角色,以保持种子按逻辑分离。目前

OnModelCreating()
看起来像这样(添加简单角色):

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    
    modelBuilder.Entity<IdentityRole>().HasData(
    new IdentityRole
    {
        Id = "300c6b87-3d71-407c-8379-53e4b3091a8d",
        Name = "Administrator",
        NormalizedName = "Administrator".ToUpper(),
        ConcurrencyStamp = null

    });
    //More roles added here
}

鉴于

Id
等属性以及其他属性数组通常由数据库生成,执行此操作的标准和最佳实践方法是什么?

asp.net asp.net-mvc entity-framework-migrations
1个回答
0
投票

您走在正确的轨道上,添加角色是通过

OnModelCreating()
完成的,但是您不应该指定 Id,因为它们是使用
Guid
结构动态生成的。如果直接指定它们可能会失去唯一性。在添加角色方面,您的代码也是正确的,但我会删除不必要的
ConcurrencyStamp
声明,因为默认情况下它是
null

这是我的做法,复制自Teddy Smith

protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            List<IdentityRole> roles = new List<IdentityRole>
            {
                new IdentityRole
                {
                    Name = "Admin",
                    NormalizedName = "ADMIN"
                },
                new IdentityRole
                {
                    Name = "User",
                    NormalizedName = "USER"
                },
                new IdentityRole
                {
                    Name = "Super-User",
                    NormalizedName = "SUPER-USER"
                }
            };

            builder.Entity<IdentityRole>().HasData(roles);

        }
© www.soinside.com 2019 - 2024. All rights reserved.