2015-01-31 38 views
0

我已經在我的解決方案如下項目類庫結構:實體框架預測和返回類型

Application.Domain.Models : Entities like User, Customer. Application.DataAcess : IUserRepository, ICustomerRepository Application.Business : IUserService, ..

對於一個操作我只需要在客戶名稱和CustomerAddress然後我將使用實體框架投影回報只有這個屬性。

我的問題是,我應該創建一個實體存儲只有這個屬性,並從這個操作返回它,或者我應該返回一個客戶實體只有這兩個屬性和所有其他沒有價值?

如果應該創建一個新的實體,它應該放入什麼層? Domain.Models,Domain.AnotherFolder或Business?

回答

2

從技術上講,你不應該構造無效的對象。所以只需取得你的整個實體並使用你需要的東西。這也意味着你可以重用一些現有的代碼。您可以創建另一個實體,但這應該與您的域模型相符。它將進入領域。如果您只是簡單地檢索要在域外使用的數據,則可以考慮使用輕量級只讀查詢層,將數據傳遞給想要讀取數據的人。

+0

當你說「技術上你不應該構造無效物體」時,我同意你的意見。但另一方面,如果我有一個byte []屬性在我的Customer實體上存儲圖像,我將浪費許多資源並導致不必要的開銷加載它並且無用。 如何解決? – 2015-01-31 19:54:05

+1

@ViniciusGonçalves是的我同意,不應該在你的實體上生活,因爲它可能不是你操作的東西。製作一個dto來攜帶這種類型的數據將會是最好的。你可以把它放在一個通用的層上,以供應用程序和數據訪問使用。域名不會知道。 – SneakyPeet 2015-01-31 20:06:45