在EF代码中使用View首先与迁移冲突

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在EF代码中使用View首先与迁移冲突相关的知识,希望对你有一定的参考价值。

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

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

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

现在当我运行应用程序时,它会抛出一个异常,说数据库上下文已被更改并需要迁移。我甚至尝试添加迁移(这似乎是错误的选项),当我添加迁移时,它说对象ViewIncomingChecks已经在数据库中。

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

Edit

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

答案

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

  • 首先将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命令,它将运行一个空迁移。

以上是关于在EF代码中使用View首先与迁移冲突的主要内容,如果未能解决你的问题,请参考以下文章

EF 代码首先告诉我对已经在 db 中的 db 对象进行迁移

如何首先将 EF Core 代码与 azure synapse 一起使用

骑士。 EF 代码优先迁移

在快速自定义的NopCommerce中使用实体框架(EF)代码优先迁移

SqlException:INSERT 语句与使用 EF 代码优先 C# 的 FOREIGN KEY 约束冲突

EF 开始的片段时有问题 具有潜在运行时冲突