简体   繁体   English

ASP.NET 核心 Web API - 使用实体框架在 .NET 核心 6 中播种数据

[英]ASP.NET Core Web API - seeding data in .NET Core 6 using Entity Framework

In ASP.NET Core 6 Web API, I am implementing EF migration seeding.在 ASP.NET Core 6 Web API 中,我正在实施 EF 迁移播种。 When I used .NET Core 5, I applied it in Startup.cs and it works there.当我使用 .NET Core 5 时,我将它应用到Startup.cs中,它在那里工作。

public static class AppDbContextSeed
{
    public static void SeedData(UserManager<ApplicationUser> userManager, RoleManager<ApplicationRole> roleManager)
    {
        SeedRoles(roleManager);
        SeedUsers(userManager);
    }

    public static void SeedRoles(RoleManager<ApplicationRole> roleManager)
    {
        if (!roleManager.RoleExistsAsync("Admin").Result)
        {
            ApplicationRole role = new ApplicationRole();
            role.Name = "Admin";
            IdentityResult roleResult = roleManager.
            CreateAsync(role).Result;
        }

        if (!roleManager.RoleExistsAsync("Student").Result)
        {
            ApplicationRole role = new ApplicationRole();
            role.Name = "Student";
            IdentityResult roleResult = roleManager.
            CreateAsync(role).Result;
        }
    }

    public static void SeedUsers(UserManager<ApplicationUser> userManager)
    {
        if (userManager.FindByNameAsync("admin").Result == null)
        {
            ApplicationUser user = new ApplicationUser()
            {
                UserName = "admin",
                Email = "admin@africa.email.com",
                FirstName = "AdminFN",
                LastName = "AdminLN",
                NormalizedUserName = "ADMIN"
            };
            IdentityResult result = userManager.CreateAsync
            (user, "Admin*123").Result;

            if (result.Succeeded)
            {
                userManager.AddToRoleAsync(user, "Admin").Wait();
            }
        }
    }
}

But now I am using .NET Core 6. So when I applied this in Program.cs :但是现在我正在使用 .NET Core 6。所以当我在Program.cs中应用它时:

public void Configure(UserManager<ApplicationUser> userManager, RoleManager<ApplicationRole> roleManager)
{
    // DB Seeding
    AppDbContextSeed.SeedData(userManager, roleManager);
}

I got this error:我收到此错误:

The local function 'Config' is declared but never used声明了本地 function 'Config' 但从未使用过

Error CS0106: the modifier 'public' is not valid for this item错误 CS0106:修饰符“public”对此项目无效

How do I correct the error and replicate this in .NET Core 6?如何更正错误并将其复制到 .NET Core 6 中?

Thank you.谢谢你。

I had to edit my last answer, the example I gave was for .net5.我不得不编辑我的最后一个答案,我给出的示例是针对 .net5 的。 Here is .net 6, I haven't tested it myself but it should work.这是 .net 6,我自己没有测试过,但应该可以。

var builder = WebApplication.CreateBuilder(args);


// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();


var app = builder.Build();


Configure(app);

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();


void Configure(WebApplication host)
{
    using var scope = host.Services.CreateScope();
    var services = scope.ServiceProvider;

    try
    {
        var dbContext = services.GetRequiredService<MyDatabaseContext>();

        if (dbContext.Database.IsSqlServer())
        {
            dbContext.Database.Migrate();
        }

        var userManager = services.GetRequiredService<UserManager<ApplicationUser>>();
        var roleManager = services.GetRequiredService<RoleManager<ApplicationRole>>();
        AppDbContextSeed.SeedData(userManager, roleManager);
    }
    catch (Exception ex)
    {
        //Log some error
        throw;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ASP.NET 核心 Web API 使用实体框架核心 - ASP.NET Core Web API using Entity Framework Core .NET 核心实体框架播种数据关系 - .NET Core Entity Framework seeding data relations 如何使用实体框架通过 ASP.NET Core Web API 处理通用查询? - How can I process a generic query through ASP.NET Core Web API using Entity Framework? 使用 ASP.NET Core MVC 将带有文件的数据发布到 api (ASP.NET Core Web API) - Post data with files using ASP.NET Core MVC to api (ASP.NET Core Web API) 在 Entity Framework Core 和 ASP.NET Core 中加载相关数据 - Loading related data in Entity Framework Core and ASP.NET Core ASP.NET 核心 Web API 与实体框架核心默认脚手架 Z594C103F2C6E04C3DAZ8AB05E 混淆 put? - ASP.NET Core Web API with Entity Framework Core default scaffolded controller confuses put and post? ASP.NET Core Web API &amp; Entity Framework Core; 为什么我收到这个错误? - ASP.NET Core Web API & Entity Framework Core; why am I getting this error? 用谷歌授权 asp.net 核心 web api(实体框架核心) Z7C82E852FB415F250Z92 - authorize asp.net core web api (entity framework core) with google oauth 在asp.net核心(Entity Framework)中播种和初始化数据库时,如何解决“空异常” - How to fix “Null exception” when seeding and initialising the database in asp.net core (Entity Framework) 如何在 ASP.NET Core web 应用程序中使用 Entity Framework Core 从数据库中保存和检索图像? - How to save and retrieve images from database using Entity Framework Core in ASP.NET Core web application?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM