关于相关对象的DDD建议(C#)

时间:2009-11-17 16:14:11

标签: c# domain-driven-design

我对这个问题持怀疑态度。保存与对象或对象关系集合相关的ID集合更好。我也计划使用存储库方法。这就是我的意思:

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;}
{

2 个答案:

答案 0 :(得分:5)

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

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

另一个解决方案是使用支持延迟加载的ORM,让您有机会按需加载好友列表。

答案 1 :(得分:3)

与所有优秀的编程工作一样,我相信根据您环境中的许多因素,答案最终会“依赖于”。

但是,我真的非常不喜欢从我的数据访问层/ ORM中公开ID(在您的示例中,这是int s)。因此,如果所有其他因素都相同,我宁愿选择第一个例子。

现在,我还要说你永远不想在PersonFriends public上制作这个制定者。您的DAL / ORM应该填充后备存储,并且客户端调用者应该只能获得该列表的只读版本。