在数据库优先中,将视图添加到EDMX中相对容易。我们如何在Code-First中做到这一点?
我们可以在自定义迁移类中使用Code First创建视图。
public partial class AddNewView : DbMigration
{
public override void Up()
{
Sql("CREATE VIEW [dbo].[NewView] AS ...");
}
public override void Down()
{
Sql("DROP VIEW dbo.[NewView]");
}
}
但是我们如何在DbContext中访问视图?
对于表,我们可以将域模型添加到DbContext中并进行一些配置,
public virtual DbSet<Person> Persons { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new PersonConfiguration());
}
将视图添加到DbContext的正确方法是什么?
答案 0 :(得分:0)
感觉有点黑,但是我最终要做的是:
public virtual DbSet<TableName> TableNames { get; }
添加到您的DbContext
运行Add-Migration vwTableName
从迁移中删除Up()
和Down()
方法。
并添加视图创建/删除SQL脚本:
public override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql("CREATE VIEW [dbo].[NewView] AS ...");
}
public override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql("DROP VIEW dbo.[NewView]");
}