2011-03-23 54 views
0

我目前正在實體框架4工作,並在C#庫模式實體框架4 - 庫模式 - 如何避免實體的滿負荷使用嵌套關係

我有一個包含它指的是主類別和一些其他的東西的屬性(Main Category)實體(Category)。

因爲導航屬性,主要類別有訪問他們的孩子的類別。

至於原因,我會解釋後,我禁用延遲加載。

當我試圖讓他的ID的類別,因爲導航性能,EF4加載整個圖形,而我只是想加載針對性類別和相關(父母或子女)實體。

我想因爲這個實體旨在轉換成DTO,並在WCF的WebService來做到這一點。圖的滿載與我的方法不兼容。

有沒有辦法避免嵌套實體的裝載與EF4?如果沒有,NHibernate可以這樣工作嗎? (我在想,禁用延遲加載將讓我有什麼,我想要加載(顯式或預先加載),完全控制,但它似乎沒有...)

+0

爲什麼不只是做延遲加載,並根據需要使用EF4急切加載屬性時形成您的查詢? – KallDrexx 2011-03-23 13:19:02

+0

我使用AutoMapper將POCO從存儲庫轉換爲DTO。如果我使用延遲加載,AutoMapper將在轉換導航屬性時加載數據庫的完整圖形。 – chjerome 2011-03-23 13:28:42

+1

如果您未請求相關實體,EF將不加載相關實體。顯示你的代碼。 – 2011-03-23 13:28:46

回答

0

你爲什麼不突出你的實體對象成當你從對象上下文本身得到結果時,dto對象?您可以使用類似

myclient.Select(c => new clientdto(){ name = c.name, email = c.email, phone = c.phone}) 

這將返回clientDTO對象的Ienumerable