0

我想有一個ObjectQuery返回被跟蹤的實體(不是靜態數據),但我不希望它加載所有的列,我想要一些列加載爲null,我不想使用select,因爲這將返回一個IEnumerable的值,而不是跟蹤的對象。實體框架:從實體框架中的選擇中排除列?

有沒有辦法做到這一點?

如果是,那麼我該如何完成重新加載這些列的需求?

回答

2

您是否嘗試過創建視圖然後映射視圖?

通過創建視圖,您可以選擇真實想要的列,並且只有那些將顯示在實體模型上的列。

+0

是的,我嘗試過。但在EF中映射視圖是不可能的! 閱讀另一個問題,我發佈之前張貼這一個(我實際上發佈了一個後,被沮喪的那一個):http://stackoverflow.com/questions/3581034/create-one-to-one-relationship-between-table-和瀏覽功能於EF4 – Shimmy 2010-08-31 22:48:35

0

我認爲唯一的方法是創建不包含不需要的列的新實體類型。你將把這個實體類型映射到同一個表。按需(懶惰)加載僅適用於導航屬性。

編輯:

我以前的想法不工作,但在一些特殊情況下可以使用的想法從這個article。不是從單個表格模擬單個實體,而是模擬與1:1關係相關的多個實體。正如我以前的想法所假定的,實體不會在屬性中重疊(主鍵除外),因爲它不起作用。您將比主要實體具有要立即加載的字段以及需要時將被加載的相關實體。

+0

+1這個想法,但你測試這種方式,它的工作原理?你確定該模型將允許同一個表的多種類型?另外,我將如何映射這兩種類型(即TableFull,TableSummary)? – Shimmy 2010-08-30 21:14:47

+0

好吧,我的壞。我確信這應該是可能的,但快速測試表明,EF團隊再次讓我失望。將兩個不相關的實體映射到同一個表看起來像是一個大問題。它開始時出現錯誤,實體共享主鍵並通過一些黑客解決這個問題只會引發其他問題。 – 2010-08-30 21:38:54

+0

我認爲實體框架是一個好主意,可惜它是由微軟懶惰的團隊管理的。因爲許多關鍵功能缺失。有沒有比EF更好的產品(有設計師)? – Shimmy 2010-08-30 22:53:29