程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了.net 5 没有用数据播种大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决.net 5 没有用数据播种?

开发过程中遇到.net 5 没有用数据播种的问题如何解决?下面主要结合日常开发的经验,给出你关于.net 5 没有用数据播种的解决方法建议,希望对你解决.net 5 没有用数据播种有所启发或帮助;

我的应用程序没有将数据播种到控制器中的数据库。 它会创建数据库,但不会播种数据。

    [httpGet("NewDb/{dbname}")]
    public voID CreateNewDb(string dbname)
    {
        var optionsBuilder = new DbContextoptionsBuilder<DataContext>()
            .UseMysqL("server=localhost; user=username; password=password;database=" + dbname,new MysqLServerVersion(new Version(8,21)));

        DataContext context = new DataContext(optionsBuilder.Options);
        context.Database.Migrate(); 
         
        // where seed is not seeding the database.   
        Seed.SeedRoles(context,_roleManager);
      }

seed.cs 这是创建角色的地方

  public static voID SeedRoles(DataContext context,RoleManager<Role> roleManager)
    {
        if (!context.Roles.Any())
        {
            //create roles
            var roles = new List<Role>
            {
                new Role{name = "admin"},new Role{name = "Standard"},new Role{name = "Basic"} 
            };
            foreach (var role in roles)
            {
                roleManager.CreateAsync(role).Wait();                    
            }  
        }
                         
    } 

解决方法

试试这个

[HttpGet("NewDb/{dbName}")]
public async Task CreateNewDbAsync(string dbName,CancellationToken cancellationToken = default)
{
    var optionsBuilder = new DbContextOptionsBuilder<DataContext>()
        .UseMySql("server=localhost; user=username; password=password;database=" + dbName,new MySqlServerVersion(new Version(8,21)));

    DataContext context = new DataContext(optionsBuilder.Options);
    context.Database.Migrate(); 
     
    // where seed is not seeding the database.   
    Seed.SeedRolesAsync(context,_roleManager,cancellationToken);
  }

还有这个

public static async Task SeedRolesAsync(DataContext context,RoleManager<Role> roleManager,CancellationToken cancellationToken = default)
{
    if (!context.Roles.Any())
    {
        //create roles
        var roles = new List<Role>
        {
            new Role{Name = "Admin"},new Role{Name = "Standard"},new Role{Name = "Basic"} 
        };
        foreach (var role in roles)
        {
            context.Add(role);
        }
        await context.SaveChangesAsync(cancellationToken);
    }
                     
} 

但是我们对种子数据所做的是在上下文中执行以下操作。这将在您对数据库调用“迁移”时调用。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Role>().HasData(Roles.Data);
}

public static class Roles
{
   // Here is where we stubb out our data
    public static List<Role> Data = new List<Role> {};
}

大佬总结

以上是大佬教程为你收集整理的.net 5 没有用数据播种全部内容,希望文章能够帮你解决.net 5 没有用数据播种所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: