Ho avuto una Problema simile con AutoFixture e EntityFramework qualche tempo fa. La mia soluzione era quella di aggiungere un'estensione all'autofixture, che ti consente di creare un SUT con alcune ricorsioni. Quell'estensione è stata recentemente adottata nell'autofixture.
Ma capisco che la tua domanda non riguardava come realizzare strutture di dati ricorsive per costruzioni di autofixture, il che è davvero possibile, ma come creare modelli di dominio senza ricorsione.
Innanzitutto, hai strutture di alberi o grafici. Qui qualsiasi cosa tranne la ricorsione significherebbe indirezione attraverso ID nodi accoppiati sciolti. Invece di definire un'associazione, dovresti attraversare la query per query sugli alberi o memorizzare nella cache il tutto e attraversare la ricerca del nodo, che può essere poco pratico a seconda della dimensione dell'albero. Qui è molto conveniente farti fare il lavoro per te.
L'altra struttura comune è una struttura di navigazione a due vie simile allo scenario utente / gioco. Qui spesso non è così scomodo potare il flusso di navigazione in un'unica direzione. Se ometti One Direction, diciamo da un gioco a squadra, puoi comunque interrogare facilmente tutte le squadre per una determinata partita. Quindi: l'utente ha un elenco di giochi e un elenco di squadre. La squadra ha un elenco di giochi. I giochi non hanno alcun riferimento a navigazione a neanche a. Per ottenere tutti gli utenti per un gioco specifico potresti scrivere qualcosa di simile:
var users = (from user in DataContext.Users
from game in user.Games
where game.Name == 'Chess'
select user).Distinct()