簡而言之:我可以在實體模型中以某種方式使用文字SQL子查詢而不使用數據庫視圖嗎?使用* sql *子查詢的實體框架查詢
上下文:我有一堆ADO.NET查詢導致C#對象。這些對象直接對應於查詢形狀;即我可以做ObjectContext.Translate
從SqlDataReader
中提取它們。有很多這些查詢,其中很多很複雜,其中一些使用實體框架不支持的功能(while循環,CTE,hierarchyids等) - 將這些(傳統)查詢轉換爲LINQ並不可行。但是,我真的很想能夠包裝這些結果,並在C#端添加一些自定義過濾:如排序,過濾,分頁等。我可以將每個查詢轉換爲視圖(或存儲過程),並映射這些,但這是一個麻煩和維護的噩夢 - 但原則上EF可以用於該路由的「不透明」的SQL查詢。
我可以以某種方式使用SQL中用實體模型編寫的子查詢嗎?返回IQueryable
而不是IEnumerable
的ObjectContext.Translate
將是理想的,但不是必需的:絕大多數查詢都是編譯時常量,因此某種形式的預處理是可能的。
編輯:我在尋找的東西返回一個IQueryable
這樣我就可以添加過濾器/排序客戶端但他們對DB執行(像往常一樣)。我首先使用實體框架代碼。
那看起來不錯!但是,我注意到我忽略了提到我已經使用了代碼優先,並且不能將代碼與模型優先混合在同一個程序集中;所以這個解決方案看起來很難使用,很不幸。 – 2012-08-07 08:28:25
標記爲答案:這可能是最好的解決方案,儘管它遠非理想。謝謝你的提示! – 2012-08-08 09:08:08