Frage

Bitte beachten Sie, dass ich kein ORM-Tool verwenden. Ich habe einfach nur ado.net Code für Klassen geschrieben und Methoden aussehen wie genau die folgende. Und ich bin Aufrechterhaltung IDs auch.

Angenommen, ich habe drei Tabellen Teacher, Course und CourseTeacher (Join-Tabelle) für eine Many-to-Many-Beziehung, und ich habe meine Klassen entsprechend ausgelegt.

Nun nehmen wir zunächst alle Tische sind leer .

Und ich bin Ausführung des folgenden Code zum ersten Mal .

Course cpp = new Course();
cpp.CourseName = "CPP";

Course java = new Course();
java.CourseName = "Java";

Course cs = new Course();
cs.CourseName = "CS";

Teacher t1 = new Teacher();
t1.TeacherName = "ttt";
t1.AddCourse(cpp);
t1.AddCourse(java);
t1.AddCourse(cs);
t1.SaveOrUpdate();

Teacher t2 = new Teacher();
t2.TeacherName = "ppp";
t2.AddCourse(cpp);
t2.AddCourse(java);
t2.AddCourse(cs);
t2.SaveOrUpdate();

Teacher t3 = new Teacher();
t3.TeacherName = "mmm";
t3.AddCourse(cpp);
t3.AddCourse(java);
t3.AddCourse(cs);
t3.SaveOrUpdate();

Wie soll ich diese Situation in meinem Code umgehen?

Soll ich werfe nur eine Ausnahme, dass Course zu sagen - Tabelle hat noch keine Daten?

Oder gleichzeitig bevölkert Course, Teacher und CourseTeacher Tabellen Datenkonsistenz zu halten?

Ist die zweite Option tatsächlich möglich ist (Coz, da Course Tabelle keine Daten hat, das Programm versucht, Daten in CourseTable eingeben wird eine Datenbank Ausnahme auslösen)?

War es hilfreich?

Lösung

Dies wird für die Anwendung ganz auf die Geschäftsregeln ab.

Wenn die Geschäftsregeln für die Anwendung Staat, neue Kurse in die Datenbank eingefügt werden, wenn sie erstellt werden, dann ist die logische Sache zu tun ist wahrscheinlich so etwas wie folgt aus:

Course java = new Course();
java.CourseName = "Java";
java.SaveOrUpdate();

Wenn auf der anderen Seite die Geschäftsregeln fest, dass alle Kurse vor existieren muss verwendet werden, dann ist die richtige Sache zu tun ist wahrscheinlich entweder (A) eine Ausnahme aus, und lassen Sie den Anrufer damit umgehen, oder (B ), um die Situation zu erkennen und es sich (möglicherweise durch die Protokollierung und werfen) zu behandeln.

Auch hier hängt es von den Anforderungen ab.

Andere Tipps

Warum nicht ein CourseCatalog Typ machen und zuerst es neue Kurse anhängen, bevor Lehrer die Kurse zuweisen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top