关于相关对象(C#)

问题描述:

我对这个问题的围栏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;} 
{ 

正如所有伟大的编程的努力,我相信答案会被清盘“这取决于”的基础上,一些在你的环境因素。

但是,我真的很不喜欢从我的数据访问层/ ORM中暴露ID(这在您的示例中为int s)。所以如果所有其他因素都是平等的,我宁愿第一个例子。

现在,我也会说你永远不会真的想在PersonFriendspublic上制造这个二传手。您的DAL/ORM应该填充后备存储,并且客户调用程序应该只能获得该列表的只读版本。

+0

actaully,该PersonFriends例子也不会公开。回购和本质将处理关系。感谢您指出htat! – DDiVita 2009-11-17 16:57:36

它通常是更好地去与对象的关系。这样你就不会强迫其他使用PersonFriends列表的类来了解整个存储库的事情,从而让你更清楚地区分域逻辑和数据访问代码。

如果你不想把完整的朋友集合加载到内存中,你可能最好不要给Person类一个PersonFriends列表,而只是在存储库上实现一个GetFriendsFor(Person person)方法。

另一个解决办法是使用支持延迟加载的ORM给你机会,按需加载好友列表中。

+0

我不认为这将是一个完整的列表,但集合的一些子集。我只是想得到一些关于这方面的意见。好主意;心存善念;睿智哲思!!!谢谢 – DDiVita 2009-11-17 17:40:42