我首先使用EntityFramework Core数据库来创建模型as illustrated in the EF Core documentation
但我不知道在编辑数据库时如何更新模型。
答案 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