首页 > 解决方案 > EF Core 是否对 SSMS 视图进行反向工程,而不仅仅是表?

问题描述

我已成功使用以下 EF Core 代码对进行逆向工程,例如:

Scaffold-DbContext "Server=myserver,1433;Database=etl_mib;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models\ETL -Context Data\etl_mibContext -Tables po_dtl_p061

但是当我尝试对视图执行完全相同的操作时,当我知道我正在使用正确的视图时,我收到一条错误消息,指出“无法在数据库中找到与所选表匹配的表......”姓名。

我正在阅读表必须有一个主键供 EF 提取,并且我的视图具有来自所选基础表的主键,这还不够吗?本文使用 ISNULL() 来欺骗它,但这对我也不起作用:https ://girlfromoutofthisworld.com/entity-framework-and-setting-primary-keys-on-views/

标签: visual-studioentity-framework-core

解决方案


现在可以通过使用无键实体类型在 EF Core 3.0 中实现这一点。您可以使用逆向工程工具 Microsoft.EntityFrameworkCore.Tools 映射视图,它将为您的视图创建无键实体类型。

使用包管理器控制台:

Scaffold-DbContext "数据源=SERVER_NAME;初始目录=DB_NAME;集成安全性=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir 模型 -Tables VIEW_NAME

https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/#re​​verse-engineering-of-database-views


推荐阅读