【问题标题】:ASP.NET Core ApiAuthorizationDbContext not creating table for data modelASP.NET Core ApiAuthorizationDbContext 没有为数据模型创建表
【发布时间】: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 来使用我自己的自定义数据模型吗?

【问题讨论】:

    标签: c# asp.net-core asp.net-core-mvc


    【解决方案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
    

    【讨论】:

    • 谢谢,所以每次我更新数据模型时,我都需要运行迁移?
    • 不客气。是的,完全正确。
    猜你喜欢
    • 2020-10-24
    • 2021-12-16
    • 2018-04-27
    • 1970-01-01
    • 2017-09-15
    • 2017-06-01
    • 2017-07-11
    • 1970-01-01
    • 2021-08-23
    相关资源
    最近更新 更多