如何在使用数据库第一种方法时更新模型

时间:2016-08-03 09:42:15

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

我首先使用EntityFramework Core数据库来创建模型as illustrated in the EF Core documentation

但我不知道在编辑数据库时如何更新模型。

9 个答案:

答案 0 :(得分:50)

您可以通过运行添加了-Force选项的最初运行的命令来重新构建模型。这将导致指定文件夹的内容被覆盖。使用程序包管理器控制台example from the EF Core docs,修订后的命令变为:

Scaffold-DbContext "Server=(localdb)\v11.0;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force

或者,如果您使用的是CLI commands,则会变为:

dotnet ef dbcontext scaffold "Server=(localdb)\v11.0;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models -f

但是,您应该考虑使用迁移来保持模型和数据库架构彼此同步。这样,您可以对模型进行更改,然后将它们传播到数据库。

答案 1 :(得分:9)

其他提示

如果您要不时更新模型,这是简化流程的便捷方法。

转到菜单工具> 外部工具,然后添加新菜单并填写以下条目:


标题

Update DbContext

命令

dotnet.exe

参数

ef dbcontext scaffold "your-connection-string" Microsoft.EntityFrameworkCore.SqlServer --output-dir=Models --force

初始目录

$(ProjectDir)

然后有选择地勾选“使用输出窗口”,按应用确定

当您再次进入工具时,只需单击一个按钮,该新菜单应已存在并且可以重复使用!

答案 2 :(得分:3)

您需要进行迁移,请勿重新折叠,否则您将丢失在模型上所做的任何工作,例如数据验证。

答案 3 :(得分:2)

使用命令Add-migration NameOfMigrationfile ,该命令在应用程序级别的迁移文件夹中创建。

如果未启用自动迁移,则可以在Package Manager控制台中使用以下一些命令。

PM> 启用迁移-force (如果未启用自动迁移) PM> 添加迁移MigrationName PM> 更新数据库-force (如果add-migration命令不起作用,那么我们可以使用udate命令)

答案 4 :(得分:0)

如果我们在dbcontext类中进行了自定义,例如 ,请添加LoggerFactory,然后再使用('Scaffold-DbContext "Server=(localdb)\v11.0;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force')。此命令将丢失所有自定义更改。

答案 5 :(得分:0)

迈克提供的解决方案对我毫无问题。这里有一些详细的答案是基于Mike的答案。

Scaffold-DbContext "Server={{Server name}};Database={{Database name}};User ID={{Login}};password={{Password}}" Microsoft.EntityFrameworkCore.SqlServer -OutputDir {{Folder name}} -Force
  • 文件夹名称:项目下的文件夹名称。执行此命令之前必须先创建文件夹。

如果您不使用SQL Server身份验证,请参考Mike给出的答案。

答案 6 :(得分:0)

您可以使用此扩展程序:EF Core Power Tools ,它会让你的生活更轻松,而且你不必编写任何命令行。

答案 7 :(得分:0)

对于那些喜欢将所有内容都保留在同一个 DbContext 类中的人,请使用带有选项 -Context 的 Scaffold-DbContext。

示例:

Scaffold-DbContext "Server=server;Database=mydb;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -f -Context MyDbContext

MyDbContext 生成的代码会放在一个新的分部类文件中,所以不会丢失任何代码。

答案 8 :(得分:-6)

打开 ContextModel.edmx 文件以显示模型图。右键单击设计图面上的任意位置,然后选择从数据库更新模型.. 。 在更新向导中,选择刷新标签,然后选择您的表格,然后点击完成按钮。

有关图片访问的详细信息:EF Database First with ASP.NET MVC: Changing the Database