2009-11-17 186 views
0

我對這個問題的圍欄DDD建議。保存與對象或對象關係集合相關的ID集合會更好嗎?我也計劃使用存儲庫方法。這裏是我的意思是:關於相關對象(C#)

public class Person 
{ 
    string PersonName {get; set;} 
    List<PersonFriend> PersonFriends {get; set;} 
{ 

or... 

public class Person 
{ 
    string PersonName {get; set;} 
    List<int> PersonFriendIds {get; set;} 
{ 

回答

3

正如所有偉大的編程的努力,我相信答案會被清盤「這取決於」的基礎上,一些在你的環境因素。

但是,我真的很不喜歡從我的數據訪問層/ ORM中暴露ID(這在您的示例中爲int s)。所以如果所有其他因素都是平等的,我寧願第一個例子。

現在,我也會說你永遠不會真的想在PersonFriendspublic上製造這個二傳手。您的DAL/ORM應該填充後備存儲,並且客戶調用程序應該只能獲得該列表的只讀版本。

+0

actaully,該PersonFriends例子也不會公開。回購和本質將處理關係。感謝您指出htat! – DDiVita 2009-11-17 16:57:36

5

它通常是更好地去與對象的關係。這樣你就不會強迫其他使用PersonFriends列表的類來了解整個存儲庫的事情,從而讓你更清楚地區分域邏輯和數據訪問代碼。

如果你不想把完整的朋友集合加載到內存中,你可能最好不要給Person類一個PersonFriends列表,而只是在存儲庫上實現一個GetFriendsFor(Person person)方法。

另一個解決辦法是使用支持延遲加載的ORM給你機會,按需加載好友列表中。

+0

我不認爲這將是一個完整的列表,但集合的一些子集。我只是想得到一些關於這方面的意見。好主意;心存善念;睿智哲思!!!謝謝 – DDiVita 2009-11-17 17:40:42