C# 首先从EF 6.1代码生成SQL视图

C# 首先从EF 6.1代码生成SQL视图,c#,entity-framework,entity-framework-6.1,C#,Entity Framework,Entity Framework 6.1,我刚把我的应用程序从数据库第一改为代码第一!部署方面有多大的改进啊!。但现在我有以下问题。我从数据库中生成了我的代码第一个模型,但是在从生成的代码中重新创建数据库之后,从数据库中生成的视图就像表一样 如何首先从代码生成视图?和/或将它们映射到我的实体(如果我需要手动生成它们) 编辑 卢克·麦格雷戈的帖子让我很接近。 是的,它现在生成视图。但是迁移不起作用 当尝试执行Update Database语句时,初始输出是仍然有代码更改 因此,我执行了addmigrationxxx命令,并再次启动了upd

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

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

编辑

卢克·麦格雷戈的帖子让我很接近。 是的,它现在生成视图。但是迁移不起作用

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

因此,我执行了addmigrationxxx命令,并再次启动了updatedatabase命令

编辑2:


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

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

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

@CraigW的可能副本。我认为这是一个与创建相关的不同问题,而不是问题的后半部分涉及到将实体映射到现有视图(即“和/或将它们映射到我的实体,如果我需要手动生成它们?”),这是他必须做的。我甚至不知道code first是如何生成视图的,它仍然需要在视图后面有一个表来存储/检索数据。可能重复使用
Sql(“EXEC('CREATE view…”)
,以避免出现“批处理中的第一个”问题。您不能输入“GO”在迁移过程中,因为它不是sql命令Lukemcgregor,所以您肯定让我接近了一个解决方案。@Colin,感谢添加了EXEC。它当然可以为meThis works生成视图。我注意到类似问题的一些其他答案创建DbContext并运行update view命令,而不是调用sql()。这有一个不幸的副作用,即即使在调用update database-script时也会实际更新数据库