0

誰かが私が構成関係をモデル化するための最良の方法を理解するのを手伝ってもらえますか?

たとえば、多くのスケジュールを持つことができる学生がいる場合、私は大まかに次のように作成します。

class Student
{
  prop long Pk { get; set; }
  prop string Name { get; set; }
  prop List<Schedule> Schedules { get; set; }
}

class Schedule
{
  prop string Semester { get; set; }
  prop List<Course> Courses{ get; set; }
}

どこかでScheduleオブジェクトがあり、それがどの学生に属しているかを特定したいと思います。Schedule.Student.Name書いて、お返しに生徒の名前をもらえるようになりたいです。スケジュールオブジェクトにもStudentプロパティを追加しますか?

私のアプリケーションは、CRUD機能を実行するためにStudentPkをScheduleオブジェクトに渡しています。必要に応じてハンドルを保持するために、StudentPKをプライベート変数として保持しています。

私のアプリケーションがより複雑になるにつれて、私は今までやってきたことを維持するのが難しくなっています。私へのあなたの提案は何ですか?これらの基本事項を復習し、より適切に処理するために、他に何を参照できますか(本/リンク)?

4

1 に答える 1

2

「Schedule.Student.Name を記述して、学生の名前を受け取りたいのですが、Schedule オブジェクトにも Student プロパティを追加しますか?」はい。

あなたが説明していること (ルックアップ用の外部キーと、オブジェクト グラフの簡単なナビゲーション用のオブジェクト参照の両方をサポートする) は、オブジェクト リレーショナル マッパー (ORM) に非常に適しているように思えます。優れた ORM は、FK/PK を使用して関連するオブジェクトを自動的にロードします (たとえば、Schedule に StudentPK フィールドがある場合、マッパーが Student プロパティのロード/マッピングを処理します)。このタイプの製品は多数あります。Entity Frameworkなどの組み込みの .NET フレームワーク、 NHibernateなどのオープンソースのフレームワーク、またはLightSpeedLLBLGenEntitySpacesまたはOpenAccessなどの商用製品を使用できます。(開示:私は商用ORMを作成する会社で働いています)。私が説明している種類の概要については、ORM またはオブジェクト リレーショナル マッパーについては Google を参照するか、Wikipedia を確認してください。

于 2009-04-27T22:48:50.183 に答える