2010-09-10 120 views
1

需要一些幫助或實體框架v4的一些建議。實體框架v4和wpf

正如您所知,EF v4不支持延遲加載標量屬性。如果我在模型中有一些實體對象,例如Order,它具有許多標量屬性,但其中一些實體對象從DB加載很昂貴,例如附加文件。

正如我後面發現的,可以將這些昂貴的屬性移動到另一個實體,例如Order1,並將它們重新映射到數據庫表。因此,原始數據庫表將映射到2個實體 - 訂單 - 包含屬性ID和名稱以及訂單1 - 與所有其他實體。

我需要做什麼?在用戶界面中,我將在左側列表框中填充實體Order(ID - 所有訂單的名稱),並在列表框中單擊訂單右側的所有其他昂貴屬性Order1。來自Order1的屬性延遲加載,並與工作savechanges,刪除對象等...。

如何使訂單的業務對象與實體分離以及如何使用wpf綁定進行設置?

感謝

回答

0

有2種型號的程序複雜化,並且可以是bug的來源。我寧願使用單個模型,然後根據需要選擇性地加載項目。

我的意思是隻使用一個實體框架模型。看起來你已經這樣做了。在需要時,您需要執行以明確加載數據,請參閱http://msdn.microsoft.com/en-us/library/bb896249.aspx

這實際上是一個來自MS的設計決定,強制您知道在哪些時間需要哪些數據。隨着自動延遲加載它的作品,但後來由於縮放問題你可以進入問題。

+0

你的意思是2個實體相同的數據庫表?或2個實體框架模型?我只有1個實體框架模型。如何選擇性加載項目?當我只有一個訂單數據庫表的實體時,我可以加載2個這樣的列: var query = db.Order.Select(o => new {IDorder = o.IDorder,Name = o.Name}) .ToList ().Select(x => new Order {IDorder = x.IDorder,Name = x.Name}); 但這樣的查詢savechanges由於上下文...不工作。 – vikox 2010-09-10 19:41:31