c# - Entity Framework Core 从现有数据库创建模型

标签 c# .net entity-framework reverse-engineering scaffolding

使用 Entity Framework Core,如何生成 EF 模型和实体?

根据 ASP.NET Core - Existing Database Microsoft 文章你需要在包管理器控制台中运行这样的命令:

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

这让您可以零控制要导入的表或 View 。这是否可能是现在使用 EF Core 对数据库进行逆向工程并创建 EF 模型和实体的唯一方法?与多年来使用完整 Entity Framework 完成的方法相比,这种方法有何进展?

最佳答案

我知道这个问题有点老了,但我认为它对遇到同样问题的人非常有用。

如果我没有正确理解您的问题,您想要指定应该生成哪些表格。 如果您将 -Tables 参数添加到命令中,应该是可能的。

这是我用来生成 3 个数据库表的命令(在包管理器控制台中):

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=DatabaseName;Trusted_Connection=True;"  
     -Provider Microsoft.EntityFrameworkCore.SqlServer 
     -OutputDir Models -Context NorthwndContext 
     -Tables Products,Categories,Suppliers -Force

如您所见,我使用 Northwnd-Database 并且只生成表“产品、类别和供应商”。显然,您可以添加更多表格,只需将它们用逗号分隔即可。

如果您不知道,您可以通过转到数据连接(服务器资源管理器)获取数据库名称,单击要添加的数据库,然后在右侧(属性),您会看到一个属性(名称) .对我来说是“NORTHWND.MDF”。

我使用 -Force 覆盖我已经创建的任何模型。

您可以使用-DataAnnotations 来获取带注释的模型。否则,您将获得 Fluent 模型配置。

PS:我只在 ASP.NET Core 2 和 Entity Framework Core 2.0.0 上尝试过。

关于c# - Entity Framework Core 从现有数据库创建模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41705235/

相关文章:

c# - 我怎么知道什么时候到达数据读取器的末端?

.net - VSTO 自定义文件夹类型

c# - Visual Studio 2010 构建问题

c# - LINQ to Entities 无法识别方法 'System.String Decrypt(System.String, System.String)' 方法

c# - 首先使用实体​​框架代码实现通用存储库

c# - 为什么要在存储库中包含 Repo.SaveChanges() 方法?

c# - Scrollviewer在用户控件WPF中不可见

c# - 一个接收端点上具有相同消息类型的多个消费者

c# - Entity Framework 对象不为 null 但 `== null` 返回 true

c# - 使用 CLI 数组分配的内存作为非托管类的存储