【问题标题】:How to update / generate database table model?如何更新/生成数据库表模型?
【发布时间】:2018-09-12 18:52:15
【问题描述】:

我正在学习 ASP.NET Core,但在以下场景中遇到了一些问题:

我为Microsoft.AspNetCore.Identity提供的IdentityUser创建了一个扩展类,扩展类为默认数据库AspNetUsers添加了一些额外的字段:

public class ApplicationUser : IdentityUser
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime BirthDate { get; set; }
    public string LockoutMessage { get; set; }
    public string SessionId { get; set; }
}

我能够执行以下命令更新表结构:

add-migration <migration name> -context <app context>
update-database

问题

假设现在我使用Microsoft SQL Server Management Studio 软件创建另一个名为UserDetails 的表,该表具有FK AspNetUsers 表的ID。

我想在Models文件夹中生成包含我应用程序所有属性的类,所以我不需要手动编写新表的表属性,我该怎么做?

我试过了:update-database,但似乎不起作用。

【问题讨论】:

    标签: asp.net sql-server entity-framework asp.net-core


    【解决方案1】:

    从数据库中引入内容的唯一方法是使用Scaffold-DbContext。然而,这是一个全有或全无的事情。它将为数据库中的每个表创建实体类(无论它们是否已经存在)一个DbContext 来启动。

    您要么首先使用代码,然后创建实体并生成针对数据库运行的迁移,要么对数据库进行更改,然后使用Scaffold-DbContext 命令生成上下文和所有关联实体。你不能混搭。

    做多做空,你需要选择一个策略并坚持下去。如果您对数据库更满意,那么在那里做所有事情并从中构建代码。否则,如果您想先使用代码,请做出承诺,永远不要手动修改您的数据库。

    【讨论】:

    • 你有什么建议?
    • @Charanoglu 我个人推荐代码优先的方法。让 EF 通过生成使模型和数据库保持同步的迁移(表、索引、约束等)来完成大部分工作。它有一个学习曲线,尤其是对于更复杂的模型,但它是值得的。
    • @Brad 我明白了.. 主要问题是现在我需要学习 EF,过去我使用的是 MySQL WorkBench 之类的图形软件,所以现在似乎很难做到这一点。
    猜你喜欢
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2011-03-04
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多