ASP.NET Core ApiAuthorizationDbContext 没有为数据模型创建表

Posted

技术标签:

【中文标题】ASP.NET Core ApiAuthorizationDbContext 没有为数据模型创建表【英文标题】:ASP.NET Core ApiAuthorizationDbContext not creating table for data model 【发布时间】:2022-01-06 20:58:15 【问题描述】:

我是 ASP.NET Core 的新手。当我创建启用了 ASP.NET Identity 的项目时,会自动为我创建一个 ApplicationDbContext 模板。

public class ApplicationDbContext : ApiAuthorizationDbContext<ApplicationUser>

    public ApplicationDbContext(
        DbContextOptions options,
        IOptions<OperationalStoreOptions> operationalStoreOptions) : base(options, operationalStoreOptions)
    
     

现在,我还希望ApplicationDbContext 自动为我自己的数据模型创建表。

public class Student

    public int Id get;set;
    public string name  get; set; 

我应该这样做吗?但这对我不起作用。

public class ApplicationDbContext : ApiAuthorizationDbContext<ApplicationUser>

    public ApplicationDbContext(
        DbContextOptions options,
        IOptions<OperationalStoreOptions> operationalStoreOptions) : base(options, operationalStoreOptions)
    
    

    public DbSet<Student> students;

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<Student>().ToTable("Student");
    

或者我应该创建另一个DbContext 来使用我自己的自定义数据模型吗?

【问题讨论】:

【参考方案1】:

首先,别忘了使用get;set;

public DbSet<Student> Students  get; set; 

然后你需要将这一行运行到你的package manager console

add-migration addStudentsTable

它将为您创建此迁移

protected override void Up(MigrationBuilder migrationBuilder)
        
            migrationBuilder.CreateTable(
                name: "Students",
                columns: table => new
                
                    Id = table.Column<int>(nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    name = table.Column<string>(nullable: true)
                ,
                constraints: table =>
                
                    table.PrimaryKey("PK_Students", x => x.Id);
                );
        

        protected override void Down(MigrationBuilder migrationBuilder)
        
            migrationBuilder.DropTable(
                name: "Students");
        

然后运行这一行也更新数据库

update-database

【讨论】:

谢谢,所以每次我更新数据模型时,我都需要运行迁移? 不客气。是的,完全正确。

以上是关于ASP.NET Core ApiAuthorizationDbContext 没有为数据模型创建表的主要内容,如果未能解决你的问题,请参考以下文章

Asp.NET Core进阶 第四篇 Asp.Net Core Blazor框架

.NET Core 1.0ASP.NET Core 1.0和EF Core 1.0简介

asp.net core 注入后仍然报错?

深入研究 Mini ASP.NET Core(迷你 ASP.NET Core),看看 ASP.NET Core 内部到底是如何运行的

.Net Core 学习 - ASP.NET Core 概念学习

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门