J'ai eu un problème similaire avec Autofixture et EntityFramework il y a quelque temps. Ma solution était d'ajouter une extension à AutoFixture, qui vous permet de construire un SUT avec quelques récursions. Cette extension a récemment été adoptée dans Autofixture.
Mais je comprends que votre question ne concernait pas comment faire de la construction de structures de données récursives de construction automatique, ce qui est en effet possible, mais comment créer des modèles de domaine sans récursivité.
Tout d'abord, vous avez des structures d'arbres ou de graphiques. Ici, tout sauf la récursivité signifierait l'indirection à travers des identifiants de nœuds couplés en vrac. Au lieu de définir une association, vous devrez traverser la requête par arborescence ou cache le tout et traverser par la recherche de nœud, ce qui peut être peu pratique en fonction de la taille de l'arbre. Ici, il est très pratique de faire faire le travail pour vous.
L'autre structure commune est une structure de navigation bidirectionnelle similaire à votre scénario utilisateur / jeu. Ici, il n'est souvent pas si gênant de tailler le flux de navigation vers une seule direction. Si vous omettez une direction, disons d'un jeu à l'autre, vous pouvez toujours interroger facilement toutes les équipes pour un jeu donné. Donc: l'utilisateur a une liste de jeux et une liste d'équipes. L'équipe a une liste de jeux. Les jeux n'ont aucune référence à la navigation à l'un ou aux deux. Pour obtenir tous les utilisateurs pour un jeu spécifique, vous pouvez écrire quelque chose comme:
var users = (from user in DataContext.Users
from game in user.Games
where game.Name == 'Chess'
select user).Distinct()