2011-04-05 86 views
0

Sooo基本上我有一個名爲Comment的表。在該表中我有三個字段,實體框架:較大實體的子集實體

  • ID
  • 標題
  • 文本

我創建了一個實體對象的表已經和它映射所有三個字段,但我現在想要的是另一個名爲CommentHeader的實體,它將僅映射ID和標題。我只想加載所有評論的標題,而不是出於速度原因的文本。那麼解決這個問題的最好方法是什麼?

我不是在尋找一個var對象的Select語句。我可以自己找出一個,我真的不喜歡這個解決方案,因爲我寧願將它抽象爲一個實體對象。

我試過這個明顯的解決方案,它只是複製原始實體對象並從中刪除文本。這導致了一個錯誤,因爲只有一個實體可以無條件映射到一個表。這聽起來像我不得不使用Select語句。我只是想在我做一些愚蠢的事情之前確定。 (這個例子中只有三個字段是爲了簡單起見,假設頭部可能有更多的字段,這是我不想僅僅使用一個var對象的select的主要原因,因爲它不只是一個領域,但可能是一大堆領域)。

回答

3

最簡單的方法可能是在數據庫中創建一個只從Comment表中選擇ID和標題的視圖(「CommentHeaders」)。然後更新你的模型並添加視圖,這將根據這些列創建一個新的實體。

+0

嗯好主意^ _ ^完全忘記數據庫視圖 – Thirlan 2011-04-05 17:02:08

+0

作爲此更新。我發現的另一個解決方案是延遲加載標量屬性。不幸的是,EF目前還不支持延遲加載屬性,所以這是目前完成的技巧。 http://stackoverflow.com/questions/786783/can-i-lazy-load-scalar-properties-with-the-ado-net-entity-framework。如果您創建的第二個類與第一個類非常相似,則此方法是最好的。在這種情況下,我根本不會創建第二堂課。 – Thirlan 2011-04-07 15:03:11