0

これらのクラスがあるとしましょう:

class Teacher {
    public int Id { get; set; }
    public string FullName { get; set; }
    public List<Course> Courses { get; set; }
}

class Course {
    public int Id { get; set; }
    public string CourseName { get; set; }
}

ここで、教師のリストから1つのTeacherインスタンスを選択し、この教師が教えることができるコースを編集できるページにリダイレクトされたとします。したがって、彼女がmomemtで教えることができるすべてのコースのリスト(データベースから取得)と、「削除」オプションと、ユーザーが選択できるすべての利用可能なコースのドロップダウンリストがあります。ユーザーがドロップダウンリストからコースを選択すると、そのコースは「彼女が教えることができる」リストに追加されます。最後に「保存」ボタンがあります。

しかし、ユーザーがリストからコースを削除したり、コースを追加したりする場合、[保存]ボタンを押すまでそのコースをデータベースに保存したくありません。私の質問は、編集中およびデータベースに保存する前に、Teacherオブジェクトとその子Courseオブジェクトをどこに保持するかです。

これまで、編集したオブジェクトを保持するためにSessionを使用してきました。新しいコースを追加すると、そのコレクションに子オブジェクトが追加されるだけで、コースを削除すると、Sessionから子オブジェクトが削除されます。それが最善の方法ですか、それとももっと良い(または少なくともよりクリーンな)ものがありますか?

4

1 に答える 1

1

これらすべてをメモリに保持して問題がない限り、セッションは正常である必要があります。セッションが途中で失われると、セッションが失われる可能性があります。

ただし、永続性を探している場合は、「保留中の」データベーステーブルをお勧めします。このテーブルでは、保存の準備ができるまで保留中のトランザクション(追加と削除)を保持できます。この画面が表示されているときに、実際のデータと保留中のデータを結合し、保存するときに、保留中の変更を実際のデータに適用して、保留中の変更を強制終了します。

キャンセルした場合は、保留中のレコードを削除するだけです。

于 2012-10-25T14:11:22.400 に答える