سؤال

يرجى تذكر أنني لا أستخدم أي أداة ORM.لقد قمت للتو بكتابة كود ado.net عادي للفئات والأساليب التي تبدو تمامًا كما يلي.وأنا أحتفظ بالهويات أيضًا.

لنفترض أن لدي ثلاثة جداول Teacher, Course و CourseTeacher(جدول الانضمام) لعلاقة متعدد إلى متعدد وقمت بتصميم فصولي وفقًا لذلك.

الآن، لنفترض في البداية جميع الجداول فارغة.

وأنا أقوم بتنفيذ الكود التالي لأول مرة.

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

كيف يجب أن أتعامل مع هذا الموقف في الكود الخاص بي؟

هل يجب أن أرمي استثناءً لأقول ذلك Course - الجدول لا يحتوي على أي بيانات؟

أو، ملء في وقت واحد Course, Teacher و CourseTeacher الجداول للحفاظ على اتساق البيانات؟

هل الخيار الثاني ممكن بالفعل (Coz، منذ ذلك الحين Course الجدول لا يحتوي على أية بيانات، البرنامج يحاول إدخال البيانات فيه CourseTable سوف يرمي استثناء قاعدة البيانات)؟

هل كانت مفيدة؟

المحلول

سيعتمد هذا كليًا على قواعد العمل الخاصة بالتطبيق.

إذا كانت قواعد العمل الخاصة بالتطبيق تنص على إدراج المقررات الدراسية الجديدة في قاعدة البيانات عند إنشائها، فمن المرجح أن يكون الشيء المنطقي الذي يجب فعله شيئًا من هذا القبيل:

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

من ناحية أخرى، إذا كانت قواعد العمل تنص على أن جميع الدورات التدريبية يجب أن تكون موجودة قبل استخدامها، فمن المرجح أن يكون الشيء الصحيح الذي يجب فعله إما (أ) طرح استثناء والسماح للمتصل بالتعامل معه، أو (ب) اكتشاف الموقف والتعامل معه بنفسك (ربما عن طريق قطع الأشجار والرمي).

مرة أخرى، ذلك يعتمد على المتطلبات.

نصائح أخرى

لماذا لا تقوم بإنشاء نوع CourseCatalog وإلحاق دورات جديدة به أولاً، قبل تعيين المعلمين لتلك الدورات؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top