【问题标题】:Generating a SQL view from EF 6.1 code first首先从 EF 6.1 代码生成 SQL 视图
【发布时间】:2014-05-22 18:58:07
【问题描述】:

我刚刚将我的应用程序从数据库优先更改为代码优先!部署方面有多么大的改进!但现在我有以下问题。我从我的数据库生成了我的代码优先模型,但是在从生成的代码重新创建数据库之后,我的数据库中的视图就像表格一样生成了!

如何首先从代码生成视图?如果我需要手动生成它们和/或将它们映射到我的实体?

编辑。

Luke McGregor 的帖子确实让我很接近。 是的,它现在生成视图。但是迁移不起作用。

当尝试执行 Update-Database 语句时,初始输出是仍有代码更改。

因此我执行了 Add-Migration xxx 命令并再次触发了 Update-Database 命令。

编辑2:

解决了我的代码优先代码和视图的 SQL 代码之间的一些差异解决了这个问题!

【问题讨论】:

  • @CraigW。我认为这是一个不同的问题,这与创造而不是 BAU 相关
  • 问题的后半部分涉及将您的实体映射到现有视图(即“和/或如果我需要手动生成它们,将它们映射到我的实体?”),这就是他将得做。我什至无法理解代码优先如何生成视图,它仍然需要视图后面的表来存储/检索数据。

标签: c# entity-framework entity-framework-6.1


【解决方案1】:

您需要创建一个手动迁移,其中包含一些原始 SQL,例如以下内容

public partial class MyMigration: DbMigration 
{ 
    public override void Up() 
    { 
        Sql("CREATE VIEW......"); 
    } 
}

【讨论】:

  • 使用Sql("EXEC ('CREATE View......." 来避免“批量中的第一个”问题。您不能在迁移中输入“GO”,因为它不是 sql 命令
  • LukeMcgregor,你确实让我接近了一个解决方案。 @Colin,感谢 EXEC 的添加。它当然可以为我生成视图
  • 这行得通,我注意到类似问题的一些其他答案创建了一个 DbContext 并运行更新视图命令而不是调用 Sql()。即使在调用 update-database -script 时,这也会产生实际更新数据库的不幸副作用
猜你喜欢
  • 2014-09-29
  • 2011-07-03
  • 2017-01-17
  • 2019-10-06
  • 2023-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多