在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
的迁移 - 从
Up
和Down
方法中删除所有代码,它将如下所示:
迁移代码:
public partial class ViewDbSetAdded : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
- 现在运行
update-database
命令,它将运行一个空迁移。
以上是关于在EF代码中使用View首先与迁移冲突的主要内容,如果未能解决你的问题,请参考以下文章
EF 代码首先告诉我对已经在 db 中的 db 对象进行迁移
如何首先将 EF Core 代码与 azure synapse 一起使用
在快速自定义的NopCommerce中使用实体框架(EF)代码优先迁移