我对这个问题持怀疑态度。保存与对象或对象关系集合相关的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;}
{
答案 0 :(得分:5)
与对象关系通常更好。这样你就不会强迫其他使用PersonFriends列表的类知道整个存储库的事情,让你更清楚地分离域逻辑和你的数据访问代码。
如果你不想将完整的朋友集合加载到内存中,你最好不要给Person类一个PersonFriends列表,只是在存储库上实现一个GetFriendsFor(Person person)方法。
另一个解决方案是使用支持延迟加载的ORM,让您有机会按需加载好友列表。
答案 1 :(得分:3)
与所有优秀的编程工作一样,我相信根据您环境中的许多因素,答案最终会“依赖于”。
但是,我真的非常不喜欢从我的数据访问层/ ORM中公开ID(在您的示例中,这是int
s)。因此,如果所有其他因素都相同,我宁愿选择第一个例子。
现在,我还要说你永远不想在PersonFriends
public
上制作这个制定者。您的DAL / ORM应该填充后备存储,并且客户端调用者应该只能获得该列表的只读版本。