在 EF Code First 中使用视图与迁移冲突
Consuming View in EF Code First conflicts with migration
我的数据库中有一个 Table“IncomingChecks”。我首先使用 EF 代码创建了它。现在,我使用 Sql Server Management Studio 添加了一个基于此 table 名为“ViewIncomingChecks”的数据库的视图,我想使用 Entity Framework 在我的应用程序中使用它的数据。
我复制了模型 class 并更改了它的名称并将其添加到上下文中:
public class ViewIncomingCheck
{
[Key]
public int Id { get; set; }
//...
}
public class CheckDataContext : DbContext
{
public virtual DbSet<ViewIncomingCheck> ViewIncomingChecks { get; set; }
//...
}
现在,当我 运行 应用程序时,它会抛出异常,指出数据库上下文已更改,需要迁移。我什至尝试添加迁移(这似乎是错误的选项),当我添加迁移时,它说对象 ViewIncomingChecks
已经在数据库中。
如何在我的代码中使用这个视图?
编辑
我目前的解决方案是为视图提供另一个上下文。这样它就不会与 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
命令,它将 运行 一个空迁移。
我的数据库中有一个 Table“IncomingChecks”。我首先使用 EF 代码创建了它。现在,我使用 Sql Server Management Studio 添加了一个基于此 table 名为“ViewIncomingChecks”的数据库的视图,我想使用 Entity Framework 在我的应用程序中使用它的数据。 我复制了模型 class 并更改了它的名称并将其添加到上下文中:
public class ViewIncomingCheck
{
[Key]
public int Id { get; set; }
//...
}
public class CheckDataContext : DbContext
{
public virtual DbSet<ViewIncomingCheck> ViewIncomingChecks { get; set; }
//...
}
现在,当我 运行 应用程序时,它会抛出异常,指出数据库上下文已更改,需要迁移。我什至尝试添加迁移(这似乎是错误的选项),当我添加迁移时,它说对象 ViewIncomingChecks
已经在数据库中。
如何在我的代码中使用这个视图?
编辑
我目前的解决方案是为视图提供另一个上下文。这样它就不会与 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
命令,它将 运行 一个空迁移。