使用 EF Core Code First 方法创建数据库视图

Abh*_*ngh 9 entity-framework entity-framework-core

我正在开发一个需要创建 DB 视图的新应用程序。我正在使用具有 MySql 风格的 EF 核心并使用代码优先方法来创建数据库和表。我没有找到创建视图的方法。如果不知何故,我可以在迁移步骤中执行原始 sql,这可能有助于创建视图,然后将其映射为 DbSet。我无法手动创建视图,因为它需要针对数据库执行视图脚本,而这在更高的环境中是不可能的。有人可以指导我。非常感谢帮助!

rel*_*dom 15

据我所知,您不能直接使用 EF Core 创建视图。但是,您可以在升级时使用迁移来执行任意 SQL。

  1. 在包管理器控制台中生成迁移,即使实际上没有什么可做的: add-migration CreatingTheView
  2. 打开生成的迁移类,文件名: Migrations\yyyyMMdd_CreatingTheView.cs
  3. 修改Up方法添加升级时要执行的原始SQL :migrationBuilder.Sql("CREATE VIEW etc.");
  4. 如果要支持降级,修改Down方法:migrationBuilder.Sql("DROP VIEW etc.");


小智 6

relative_random 的答案几乎对我有用,但我必须使用以下语法才能使其工作:

migrationBuilder.Sql(@"exec('create view dbo.MyViewName as ....');");
Run Code Online (Sandbox Code Playgroud)

migrationBuilder.Sql("exec('drop view dbo.MyViewName');");
Run Code Online (Sandbox Code Playgroud)

如果没有这个,我会收到一个 sql 错误“创建视图必须是批处理中的唯一语句”。