2009-04-19 8 views
0

Ich schreibe meine erste NHibernate-Anwendung, aber ich denke, diese Frage gilt für jedes ORM-Framework. Meine Anwendung ist eine einfache Bug-Tracker (Devs alle verstehen die Problemdomäne, richtig?), Und ich frage mich, wie man die Projekt/Ticket-Beziehung in der DAL am besten modellieren. A Project hat mehrere Ticket s; a Ticket muss von einem Project gehört werden.Wie sollte meine Datenzugriffsebene bei einer Eltern-Kind-Beziehung aussehen?

Jedes Beispiel, das ich gesehen habe, zeigt ein IRepository<T>, mit FindAll, Save, Delete, etc. Also habe ich eine interface IProjectRepository : IRepository<Project>.

Meine Frage kommt aus dem Folgenden: Habe ich eine ITicketRepository, die weiß, wie man über Tickets spricht, oder ist das etwas, das die 10 wissen muss?

Oder belle ich komplett den falschen Baum an? Kann mir jemand einen Beispielcode zeigen, der eine Eltern-Kind-Beziehung mit einer DAL modelliert?

Antwort

0

Ich denke, Sie möchten es in das IRepository-Repository einfügen, wenn Sie nur die Liste der Tickets gehen, können Sie auch eine Ticket-Sammlung zu der Projekt-Entität hinzufügen und die Tickets lazy-load. Auf diese Weise können Sie das Projekt aus Ihrem IRepository abrufen und wenn Sie möchten, dass alle Tickets einfach auf diese Sammlung treffen, aber wenn Sie nur nach den Tickets suchen, dann können Sie mit ihnen über das IRepository arbeiten.

+0

Aber habe ich zwei Repository-Schnittstellen oder nur die? Das gesamte IRepository Muster impliziert, dass ich einen pro Entitätstyp haben sollte. –

+0

Ich denke, Sie sollten einen pro Entity haben, aber das heißt nicht, dass Sie die Lazy-Loading-Collection auch nicht nutzen können. –

Verwandte Themen