Domanda

Ricorda che non sto usando nessuno strumento ORM. Ho appena scritto un semplice codice ado.net per classi e metodi che sembrano esattamente i seguenti. E sto mantenendo anche gli ID.

Supponi di avere tre tabelle Teacher , Course e CourseTeacher (join table) per una relazione Many-to-Many e ho progettato le mie lezioni di conseguenza.

Ora supponiamo che inizialmente tutte le tabelle siano vuote .

E sto eseguendo il seguente codice per la prima volta .

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();

Come devo gestire questa situazione nel mio codice?

Devo semplicemente lanciare un'eccezione per dire che Course - la tabella non ha dati?

Oppure, popolare contemporaneamente le tabelle Corso , Insegnante e CourseTeacher per mantenere la coerenza dei dati?

La seconda opzione è effettivamente possibile (Coz, poiché la tabella Course non ha dati, il programma che tenta di inserire i dati in CourseTable genererà un'eccezione del database )?

È stato utile?

Soluzione

Questo dipenderà interamente dalle regole di business per l'applicazione.

Se le regole aziendali per l'applicazione affermano che i nuovi corsi vengono inseriti nel database quando vengono creati, la cosa logica da fare è probabilmente qualcosa del genere:

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

Se, d'altra parte, le regole aziendali stabiliscono che tutti i corsi devono esistere prima di essere utilizzati, è probabile che la cosa giusta da fare sia (A) generare un'eccezione e lasciare che sia il chiamante a gestirla, oppure (B ) rileva la situazione e gestiscila tu stesso (possibilmente accedendo e lanciando).

Ancora una volta, dipende dai requisiti.

Altri suggerimenti

Perché non creare un CourseCatalog Type e aggiungere prima nuovi corsi prima di assegnare gli insegnanti a quei corsi?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top