我最近重构了我的域模型以删除由导航属性引起的循环引用。下面是域模型的基本结构:
- 用户有很多游戏
- 游戏有很多 UserTeams
- 用户有许多用户团队
以前我在 UserTeam 模型中有一个导航属性,用户。
为了避免循环引用(我在使用 autofixture 进行单元测试时遇到了问题),我从 UserTeam 中删除了 User 导航属性。
以前,在我的视图中,当循环浏览游戏时,我可以像这样获取 UserTeam 的用户:
foreach (game in games)
{
foreach (userteam in game)
{
userteam.User.UserName
}
}
现在我不能这样做(因为 User 不再是 UserTeam 的属性)。
所以,现在我必须从视图中调用一个方法,比如GetUser(userteam.UserId)
.
与以前的结构相比,这似乎非常低效(必须在每次循环迭代中进行数据访问)。
有没有更好的办法?