EF6 代码优先和 VIEW

EF6 code first and VIEW

我想在数据库中添加一个VIEW,并使用L2E 从这个VIEW 中查询数据。我使用迁移来维护数据库模式。

我添加了一个 class 应该 MAP 到 VIEW 列。例如,这个 class 只有两个属性

[Table("View_Data")]
public class ViewData
{
    [Key]
    public int Id { get; set; }
    public int PropertyA { get; set; }
}

public class ViewDataMap : EntityTypeConfiguration<ViewData>
{
    public ViewDataMap ()
    {
        this.ToTable("View_Data");
        this.HasKey(t => t.Id);
    }
}

我将 ViewDataMap 添加到 OnModelCreating,就像任何其他 Table 映射一样。我添加了 DbSet ViewDatas。

当我执行的时候

add-migration preview

它使用 CreateTable 命令创建了新的迁移。因为我不想创建一个 table,而只想创建一个视图,所以我将 UP() CreateTable 替换为 Sql("CREATE VIEW...")

EF 仍然抱怨数据库中的未决更改,并且仍然想使用 CreateTable()...

创建新的迁移

如何防止 EF 创建新的 table,而是改用 VIEW?

正如史蒂夫在评论中建议的那样,我忘记执行 更新数据库,然后一切正常。