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相差不大,基本上通用。