我曾有一个 类似的问题 不久前使用自动框架和实体框架。我的解决方案是在自动倒装置中添加扩展名,使您可以使用一些递归构建SUT。该扩展最近已在自动框架中采用。
但是我知道您的问题不是关于如何使自动固定构建递归数据结构的问题,这确实是可能的,而是如何在没有递归的情况下创建域模型。
首先,您有树或图形结构。除递归外,其他任何东西都意味着通过松散的耦合节点ID间接。您不必定义关联,而是必须逐渐浏览树木查询或缓存整个事物并通过节点键查找,这可能是不切实际的,具体取决于树大小。在这里,让EF为您完成工作非常方便。
另一个常见的结构是类似于您的用户 /游戏方案的双向导航结构。在这里,修剪导航流向单个方向的情况通常并不不便。如果您忽略一个方向,可以说从游戏到团队,您仍然可以轻松查询所有团队是否对给定的游戏进行查询。因此:用户有游戏列表和团队列表。团队有游戏列表。游戏没有导航引用。为了让所有用户进行特定游戏,您可以写类似的内容:
var users = (from user in DataContext.Users
from game in user.Games
where game.Name == 'Chess'
select user).Distinct()