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?
正如史蒂夫在评论中建议的那样,我忘记执行 更新数据库,然后一切正常。
我想在数据库中添加一个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?
正如史蒂夫在评论中建议的那样,我忘记执行 更新数据库,然后一切正常。