如何更新 Scaffold-DbContext 生成的现有模型类

M_I*_*ees 14 entity-framework ef-database-first asp.net-core

使用 ASP.NET CORE EF,我使用以下命令从现有数据库生成模型类:

Scaffold-DbContext "Server=myserver\mydb;Database=mydb;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Run Code Online (Sandbox Code Playgroud)

现在我的数据库发生了变化,例如我在表中添加了一个新列AppUser。我不想使用迁移来保持模型与数据库的同步。

我已经在数据库中进行了更改,现在我想从当前数据库状态更新现有的模型类。有什么建议如何做到这一点?

我是否应该删除现有的模型类并使用相同的命令重新生成Scaffold-DbContext,或者我们是否有任何其他方法使现有的模型类反映新的更改。

Jul*_*ián 15

您在寻找这样的东西

据我所知,要更新模型,您必须执行相同的命令来覆盖更改,但使用另一个附加标志。

我记得使用 -f(强制)选项来覆盖更改:

Scaffold-DbContext "Server=myserver\mydb;Database=mydb;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -f
Run Code Online (Sandbox Code Playgroud)

尽管也可以指示要更新哪个实体(表):

Scaffold-DbContext "Server=myserver\mydb;Database=mydb;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -t <table> -f
Run Code Online (Sandbox Code Playgroud)

  • 谢谢@Julian,第一个命令完成了工作。第二个命令也有效,但不符合我的预期。虽然它为一张表生成了模型类,但它也覆盖了我的 DbContext 类,其中它仅包含一张特定表的 DbSet&lt;T&gt; 属性。它删除其他表的剩余属性。 (3认同)