質問

ORMツールを使用していないことに注意してください。クラスとメソッドのado.netコードを次のように記述しました。また、IDも管理しています。

多対多の関係のために、3つのテーブル Teacher Course 、および CourseTeacher (join table)があり、設計したとしますクラスに応じて。

今、最初はすべてのテーブルが空ですと仮定します。

そして、初めて次のコードを実行しています。

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 Teacher 、および CourseTeacher テーブルを同時に作成して、データの一貫性を維持しますか?

2番目のオプションは実際に可能ですか(Coz、 Course テーブルにはデータがないため、 CourseTable にデータを入力しようとするプログラムはデータベース例外をスローします)?

役に立ちましたか?

解決

これは、アプリケーションのビジネスルールに完全に依存します。

アプリケーションのビジネスルールで、作成時に新しいコースがデータベースに挿入されると記載されている場合、論理的なことは次のようになります。

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

一方、ビジネスルールで、使用する前にすべてのコースが存在する必要があると規定されている場合、適切なことは、(A)例外をスローして呼び出し元に処理させるか、(B )状況を検出し、自分で処理します(場合によっては、ログ記録とスローによって)。

これも要件に依存します。

他のヒント

CourseCatalogタイプを作成し、新しいコースを最初に追加してから、教師をそれらのコースに割り当てるのはなぜですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top