好了,所以這裏的問題是,我有在包含-大量的信息,100ish列的數據庫視圖,vwComponantAEF5映射IQueryable的自定義類列屬性
我有我的中的一個實體。 net應用程序稱爲ComponantA,其中包含使用[Column()]屬性的所有映射,這很好,可以工作,但速度很慢,因爲它在數據庫上執行select *來填充對象,而且這種方法仍然有效。
爲了解決上述性能問題,我介紹了DynamicLinq。這使我能夠減少回收的列數量,並且仍然允許使用類型安全性來使用正常的Linq查詢,這非常棒。然後處理裁減字段,我帶回了POCO組件,每個組件都有自己的一組[Column]屬性,它們在運行時使用映射類映射。
問題是,在處理大型數據集時,這些映射之間的映射可能非常緩慢,10000條記錄映射10000次等.EF所做的是創建一個DynamicProxyClass,然後在組件之間進行映射。
我的問題是,我怎樣才能避免映射,讓EF爲我做映射? (我正在處理IQueryable
而不是IQueryable<T>
因爲動態linq)
必須有一種方法來利用[列]屬性,同時保持查詢動態。
這是所有的代碼第一和實體框架5.
感謝您的幫助。尼克
我這樣做的原因是因爲某些特定類型的列中存在特定的規則。即視圖上有5列表示所有東西,但只有一列我想要映射回我的對象上的通用屬性。這有意義嗎? –
我仍然不明白爲什麼它應該是與投影問題,你明確地說哪個列被分配到哪個屬性。 –
好吧,所以我使用DynamicSQL的原因是,例如我有一個5列的視圖,它們都有類似的含義,但取決於用戶通過UI選擇的內容,其中一個需要映射回一個名爲'結果「,這個屬性然後推動了很多邏輯。所以它不像「結果= c.Outcome」那麼簡單,更像是「結果= c。<在運行時確定的屬性>」。我想問題是,我怎麼能用你上面提出的建議來做到這一點? (我可能更困惑你 - 讓我把一些東西放在zerobin上) –