Ich hatte ein Ähnliches Problem mit Autofixure und EntityFramework vor einiger Zeit. Meine Lösung bestand darin, die Autofixure eine Erweiterung hinzuzufügen, mit der Sie eine SUT mit ein paar Rekursionen erstellen können. Diese Erweiterung wurde kürzlich in Autofixure übernommen.
Ich verstehe jedoch, dass es in Ihrer Frage nicht darum ging, wie man Autofixure -Konstrukt rekursive Datenstrukturen durchführt, was in der Tat möglich ist, sondern wie man Domänenmodelle ohne Rekursion erstellt.
Zunächst haben Sie Baum- oder Graphenstrukturen. Hier würde alles andere als Rekursion durch lose gekoppelte Knoten -IDs eine Indirektion bedeuten. Anstatt eine Assoziation zu definieren, müssten Sie die Baumfrage für den Abfragen durchquer durchqueren oder das Ganze zwischenstrahlen und durch die Knotenschluchung durchqueren, was je nach Baumgröße unpraktisch sein kann. Hier ist es sehr praktisch, dass EF die Arbeit für Sie erledigt.
Die andere gemeinsame Struktur ist eine wechselseitige Navigationsstruktur, die Ihrem Benutzer- / Spielszenario ähnelt. Hier ist es oft nicht so unpraktisch, den Navigationsfluss in eine einzelne Richtung zu beschneiden. Wenn Sie eine Richtung weglassen, sagen Sie von Spiel zu Team, können Sie immer noch alle Teams für ein bestimmtes Spiel problemlos abfragen. Also: Der Benutzer hat eine Liste von Spielen und eine Liste von Teams. Das Team hat eine Liste von Spielen. Spiele haben keinen Navigationsverweis auf auch. Um alle Benutzer für ein bestimmtes Spiel zu erhalten, können Sie so etwas schreiben wie:
var users = (from user in DataContext.Users
from game in user.Games
where game.Name == 'Chess'
select user).Distinct()