带有 Sql 视图的实体框架在生成 .sql 文件中显示为表

Posted

技术标签:

【中文标题】带有 Sql 视图的实体框架在生成 .sql 文件中显示为表【英文标题】:Entity Framework with Sql Views in it appear as table in generate .sql file 【发布时间】:2011-03-28 08:23:36 【问题描述】:

我的项目中有一个实体模型,其中包含一些 SQL 视图 - 使用“从数据库更新模型”选项导入的视图。

现在,当我选择“从模型生成数据库”时,我会将这些视图视为表。我怎样才能避免这种情况?

【问题讨论】:

【参考方案1】:

这是正确的行为。 EF 不知道定义视图的 SQL 代码是什么,因此无法创建它。此外,EF 并不关心您创建当前模型的方式,因此如果您首先从包含视图的数据库定义模型,然后从该模型创建数据库,它确实会用表替换所有视图。

【讨论】:

它可能会这样做,但这是错误的行为。它可以记住模型来自视图,并且至少可以选择在生成数据库脚本时不生成表。每次创建新的测试数据库时,我都必须删除此类定义,以便我可以比较我的数据库是否与我的模型生成的内容保持同步。 我绝对同意这很烦人。我认为解决它的方法是在运行生成的模式创建脚本之前运行一个创建视图脚本。该脚本将在视图上出错,但继续运行。

以上是关于带有 Sql 视图的实体框架在生成 .sql 文件中显示为表的主要内容,如果未能解决你的问题,请参考以下文章

带有 Firebird 的实体框架引发动态 SQL 错误

优化实体框架生成的 SQL Server 执行计划

SQL 服务器视图在实体框架中返回不同的结果

实体框架和 SQL Server 视图

实体框架 Code First SQL Server 视图

为啥实体框架会生成嵌套 SQL 查询?