Blazor web App数据迁移——(三)

1  数据迁移命令

    1.1  Add-Migration/Remove-Migration/Update-database/Script-Migration
    1.2  Get-Help <cmdlet-name>
2  数据迁移命令Add-Migration指定输出目录

    add-migration initDB01  -outputdir Data/Migrations

    指定数据迁移文件输出到Data/Migrations目录下,如下 

 

3 使用update-database

    使用此命令生成数据库时,会读取appsettings.json文件中连接字符串,生成相应的数据库。如果对应的连接字符串没有赋值,则会给出报警:

4  列出迁移Get-Migration    

5  列出迁移并移除最近迁移Get-Migration  Remove-Migration    

 

6  执行迁移命令遇到Build failed解决方法

    检查是否为启动项+项目是否编译成功+检查ApplicationDbContext需要恢复到以前

7 运行异常:

System.InvalidOperationException:“Scheme already exists: Identity.Application”

builder.Services.AddIdentity<ApplicationUser, ApplicationRole>(options =>
{
    options.SignIn.RequireConfirmedAccount = true;
    options.SignIn.RequireConfirmedEmail = false;

}).AddEntityFrameworkStores<ApplicationDbContext>()
.AddSignInManager()
.AddDefaultTokenProviders();

   

原因是与以下代码有重复,把这部分代码注释后,就可以运行正常了。

//builder.Services.AddAuthentication(MyAction).AddIdentityCookies();
// authentication
//builder.Services
//    .AddAuthentication(options =>
//{
//    options.DefaultScheme = IdentityConstants.ApplicationScheme;
//    options.DefaultSignInScheme = IdentityConstants.ExternalScheme;
//})
//#region testAuthor
//    .AddCookie(options=>
//{
//    options.Cookie.Name = "auth";
//    // return 401 if logout.
//    options.Events.OnRedirectToLogin = context =>
//    {
//        context.Response.StatusCode = StatusCodes.Status401Unauthorized;
//        return Task.CompletedTask;
//    };
//    //return 403 when unauthorized.
//    options.Events.OnRedirectToAccessDenied = context =>
//    {
//        context.Response.StatusCode = StatusCodes.Status403Forbidden;
//        return Task.CompletedTask;
//    };

//})
//#endregion
//    .AddIdentityCookies();

 

 8  以下是运行正常的代码

builder.Services.AddAuthentication(MyAction).AddIdentityCookies();
authentication
builder.Services
    .AddAuthentication(options =>
{
    options.DefaultScheme = IdentityConstants.ApplicationScheme;
    options.DefaultSignInScheme = IdentityConstants.ExternalScheme;
})
#region testAuthor
    .AddCookie(options =>
{
    options.Cookie.Name = "auth";
    // return 401 if logout.
    options.Events.OnRedirectToLogin = context =>
    {
        context.Response.StatusCode = StatusCodes.Status401Unauthorized;
        return Task.CompletedTask;
    };
    //return 403 when unauthorized.
    options.Events.OnRedirectToAccessDenied = context =>
    {
        context.Response.StatusCode = StatusCodes.Status403Forbidden;
        return Task.CompletedTask;
    };

})
#endregion
    .AddIdentityCookies();
builder.Services.AddIdentityCore<ApplicationUser>(options =>
{
    //options.SignIn.RequireConfirmedAccount = true;
    //options.SignIn.RequireConfirmedEmail = false;
}).AddRoles<ApplicationRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddSignInManager()
.AddDefaultTokenProviders();

 

 

 

 

 

    

posted on 2025-05-14 14:09  博观约取*厚积薄发  阅读(47)  评论(0)    收藏  举报