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; }
}

现在假设我从教师列表中选择了一个教师实例,并且我已被重定向到一个页面,我可以在其中编辑该教师可以教授的课程。所以有一个她可以在moemt教授的所有课程的列表(从数据库中获取),带有一个“删除”选项和一个用户可以选择的所有可用课程的下拉列表;当用户从下拉列表中选择一门课程时,它会被添加到“她可以教”列表中。最后是一个“保存”按钮。

但是,当用户从列表中删除课程或添加课程时,我不想将其保存到数据库中,直到按下“保存”按钮。我的问题是:在编辑和保存到数据库之前,在哪里保存 Teacher 对象及其子 Course 对象?

到目前为止,我一直在使用 Session 来保存已编辑的对象;添加一个新课程只是将一个子对象添加到它的集合中,删除一个课程会从 Session 中删除一个子对象。这是最好的方法还是有更好的方法(或者至少更干净)?

4

1 回答 1

1

会话应该没问题,只要您可以将所有这些都保存在内存中,并且如果会话过早丢失,则可能会丢失它。

但是,如果您正在寻找持久性,我可能会建议一个“待处理”数据库表,您可以在其中保留待处理的事务(添加和删除),直到它们准备好被保存。当您在此屏幕上时,将真实数据与待处理数据结合起来,当您保存时,将待处理更改应用于真实数据并终止待处理更改。

如果他们取消,您所要做的就是删除待处理的记录。

于 2012-10-25T14:11:22.400 回答