Pregunta

Recuerde que no estoy utilizando ninguna herramienta ORM. Acabo de escribir el código llano de ado.net para que las clases y los métodos sean exactamente los siguientes. Y también estoy manteniendo las identificaciones.

Supongamos que tengo tres tablas Teacher , Course y CourseTeacher (combinación de tablas) para una relación Many-to-Many y he diseñado mis clases en consecuencia.

Ahora, supongamos que inicialmente todas las tablas están vacías .

Y estoy ejecutando el siguiente código por primera vez .

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

¿Cómo debo manejar esta situación en mi código?

¿Debo lanzar una excepción para indicar a ese Curso - la tabla no tiene datos?

O, rellene simultáneamente las tablas Course , Teacher y CourseTeacher para mantener la coherencia de los datos?

¿Es realmente posible la segunda opción (Coz, dado que la tabla Course no tiene ningún dato, el programa que intenta ingresar datos en CourseTable generará una excepción en la base de datos) )?

¿Fue útil?

Solución

Esto dependerá completamente de las reglas comerciales de la aplicación.

Si las reglas de negocios para la aplicación indican que los nuevos cursos se insertan en la base de datos cuando se crean, entonces lo más lógico es probablemente algo como esto:

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

Si, por otro lado, las reglas de negocios establecen que todos los cursos deben existir antes de ser utilizados, entonces lo más apropiado es que (A) lance una excepción y deje que la persona que llama la maneje, o (B ) detecte la situación y la maneje usted mismo (posiblemente registrando y lanzando).

De nuevo, depende de los requisitos.

Otros consejos

¿Por qué no hacer un Tipo de Catálogo de Cursos y agregarle nuevos cursos primero, antes de asignar maestros a esos cursos?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top