EF Code First中的使用视图与迁移冲突

时间:2019-04-05 08:21:04

标签: c# .net entity-framework ef-code-first

我的数据库中有一个表“ IncomingChecks”。我首先使用EF代码创建了它。现在,我已经使用Sql Server Management Studio在基于该表的名为“ ViewIncomingChecks”的数据库中添加了一个视图,并且我想使用实体框架在其应用程序中使用其数据。 我复制了模型类,并更改了其名称,并将其添加到上下文中:

public class ViewIncomingCheck
{
    [Key]
    public int Id { get; set; }
     //...
}

public class CheckDataContext : DbContext
{
    public virtual DbSet<ViewIncomingCheck> ViewIncomingChecks { get; set; }
    //...
}

现在,当我运行该应用程序时,它引发异常,表明数据库上下文已更改,需要迁移。我什至尝试添加一个迁移(这似乎是错误的选择),当我添加迁移时,它说对象ViewIncomingChecks已经在数据库中。

如何在代码中使用此视图?

编辑

我当前的解决方案是为视图提供另一个上下文。这样就不会与EF迁移冲突。这是最好的选择还是有更好的方法来处理它。

1 个答案:

答案 0 :(得分:1)

根据我在项目中所做的事情:

  • 首先将public virtual DbSet<ViewIncomingCheck> ViewIncomingChecks { get; set; }添加到您的DbConext

  • 现在创建一个名为ViewDbSetAdded

  • 的迁移
  • UpDown方法中删除所有代码,如下所示:

迁移代码:

public partial class ViewDbSetAdded : DbMigration
{
    public override void Up()
    {

    }

    public override void Down()
    {

    }
}
  • 现在运行update-database命令,它将运行一个空迁移。