ef core新加入的功能“Query Type”可以让我们很方便的查询视图而不需要做任何特殊处理。不过在代码上和普通的查询有些不同。
先贴文档:https://docs.microsoft.com/en-us/ef/core/modeling/query-types
文档中有一些很重要的地方单独提一下:
在DbContext中,普通table定义模型用的类型是DbSet,而视图用的是DbQuery
//传统table public virtual DbSet<Address> Address { get; set; } //视图 public virtual DbQuery<BrowserReportView> BrowserReportView { get; set; }
普通table在OnModelCreating里调用的是Entity和ToTable方法进行声明,而视图调用的是Query和ToView。
modelBuilder.Entity<Address>(entity => { entity.ToTable("Address", "mall"); }); modelBuilder.Query<BrowserReportView>().ToView("BrowserReportView", "mall");
DbQuery在查询上和DbSet相差不大,基本上通用。