2016-07-04 58 views
0

我正在編寫一個傳呼,以便所有查詢(數據庫或基於列表)都可以使用相同的邏輯。檢查IQueryable <T>具有使用反射的數據庫源

這似乎像StartsWith功能正常工作時的數據類型是System.Collections.Generic.List<T>但當查詢來自於一個數據庫存儲(EF),它抱怨,因爲我設置StringComparison屬性(EF沒有實現與方法簽名StringComparision

我所做的就是寫普通列表2個獨立的功能1(與StringComparison和一個用於數據庫連接的查詢

我的問題是:什麼是看如果查詢是從一個最好的辦法數據存儲(沒有實際引用EF模塊,因爲我不想被綁定到EF)。

這是我目前有工作的:

bool _queryConnectedToData=query.Provider.GetType().Namespace.ToLower().Contains("system.data"); 

回答

1

嘗試使用ObjectContext來完成這個

ObjectContext.GetObjectType(query.GetType()); 

對於實體這將返回你的實體類型,並用一個列表,它會仍然返回System.Collections.Generic.List<T>

它綁定到System.Data.Entity,但如果你不希望它綁定到那,然後通過接口注入它。

+0

會試試看。 – Qpirate

+0

只是一個更新,當它的'List '它會返回一個'System.Linq.EnumerableQuery'而不是List的類型。但你直接指出我的權利。非常感謝 – Qpirate