[英]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
查詢創建的,並且您從未在其上調用ToList
, AsEnumerable
或其他執行方法時,才能將IQueryable
轉換為ObjectQuery
。 這也意味着對存儲過程的調用不能轉換為ObjectQuery
。
真正的IEnumerable
(執行的查詢)無法轉換為ObjectQuery
,也無法從IEnumerable
獲取有關結果集來源的任何信息。 對於所有調用ToList
或AsEnumerable
查詢,例如對映射存儲過程的所有調用,都是這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.