簡體   English   中英

在ENtity Framework中查找IQueryable和IEnumerable中引用的對象的名稱

[英]Find the Name of Objects referenced in IQueryable and IEnumerable in ENtity Framework

我正在創建一個通用函數,其函數定義為:

  public static List<T> Func_IEnumerable<T>(this IEnumerable<T> q, ObjectContext dc, string CacheId)

一個功能是

  public static List<T> Func_IQueryable<T>(this IQueryable<T> q, ObjectContext dc, string CacheId)

問題是我想找出在Ienumerable或IQueryable查詢中引用的表名,過程名,函數名和/或視圖名

Linq框架是否可能

如果不是,那么我們可以將IEnumerable轉換為System.Data.Objects.ObjectQuery ,最后使用ToTraceString獲得純SQL。

現在,我們可以從Pure Sql獲取對象名稱。

不管Sql Server是否具有某些功能,如果不這樣做,那么我應該如何解析它以獲得所需的結果。

謝謝,

任何幫助表示贊賞。

如果要使用SqlCacheDependency (功能嚴重依賴於SQL),為什么要首先使用EF(試圖盡可能多地隱藏SQL的功能)? 您正在組合兩個不能一起使用的功能-在.NET框架中經常發生。

僅當對象為ObjectQuery =它是作為對公開ObejctSet查詢創建的,並且您從未在其上調用ToListAsEnumerable或其他執行方法時,才能將IQueryable轉換為ObjectQuery 這也意味着對存儲過程的調用不能轉換為ObjectQuery

真正的IEnumerable (執行的查詢)無法轉換為ObjectQuery ,也無法從IEnumerable獲取有關結果集來源的任何信息。 對於所有調用ToListAsEnumerable查詢,例如對映射存儲過程的所有調用,都是這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM