Ich habe ein Problem mit dem Design meiner Modelle. Die Anwendung hat Module (IE Universitätsmodule), die von einem oder mehreren Dozenten unterrichtet werden, Dozenten können auch einen oder mehrere Module unterrichten, daher gibt es im Hinblick auf das Datenbankdesign eine Viele-zu-viele Beziehung zwischen Modulen und Dozenten, daher in meinem Datenbank diese Beziehung wird durch eine Additionstabelle dargestellt werden, die MODULE_ID und Lecturer_id als Verbund Schlüssel hat dies zu erreichen, ich mit dem virtuellen Modifikator und vice versa eine Liste der Dozenten im Modul Klasse enthalten ist, wie untenModellentwurf und LINQ Abfrage
gesehenpublic class Module
{
public int id { get; set; }
public string name { get; set; }
public Department department { get; set; }
public string code { get; set; }
public virtual List<Lecturer> lecturers { get; set; }
...
}
Und die Dozenten-Klasse:
public class Lecturer
{
public int id { get; set; }
public string name { get; set; }
public virtual List<Module> modules { get; set; }
...
}
Meine erste Frage ist, ist dies der beste Weg um diese Situation in den Modellen zu implementieren? Es scheint in Ordnung zu sein, aber das bedeutet, dass Module Dozenten haben, die Module unterrichten, die dann von den Dozenten ... unterrichtet werden und so weiter, und daher sehr ineffizient und nicht optimal erscheinen. Es bedeutet auch, dass ich aufgrund dieser Schleife zB kein Modul als JSON-Objekt an den Browser zurückgeben kann.
Schließlich, wenn dies die richtige Implementierung ist, gibt es eine Möglichkeit, LINQ zu einem Modul abzufragen und dann ein begrenztes Modul zurückzugeben, das Dozenten hat, aber dann sind die Vorlesungen eingeschränkt und ihnen sind keine Module zugeordnet? Im Moment verwende ich die folgende Aussage?
Module module = dbContext.Modules.Where(r => r.id == id).Single();
Wenn Sie Kommentare zum Design Ihres Programms wünschen, sollten Sie zu Programmers.SE gehen. Wenn Sie Antworten auf den Code selbst möchten, sollten Sie wahrscheinlich den Code einfügen, mit dem Sie Probleme haben. –
Ich stimme nicht mit @GeorgeStocker überein - dies ist eine absolut gültige Frage für Stack Overflow. – Randolpho
@Randolpho Es ist eine * Design * -Frage (er sagt es sogar im Titel). Als solche ist es eine Programmierfrage. –