如何使用master / detail保存类

时间:2012-06-04 09:01:20

标签: c# methods save master detail

这是我的班级记录,可以是主/详细/细节    教师及其学生的记录

class Record
{

    public string RecorNo { get; set; }

    private List<Teacher> _Student = new List<Teacher>();

    public List<Teacher> Teacher
    {

        get { return _Teacher; }
        set { _Teacher=value; }

    }
    }


class Teacher
{
    private string _TeacherName;

    public Teacher(string teachername)
    {
        _TeacherName = teachername;
    }

    public string TeacherName
    {
        get { return _TeacherName; }
        set { _TeacherName = value; }
    }

    private List<Students> _students = new List<Students>();

    public List<Students> Students
    {
        get { return _students;}
        set { _students = value;}

    }


}


class Details
{


    private string _studentname;

    public Details(string studentsname)
    {

        _studentsname = studentsname;

    }

我在2 data.gridview中绑定了教师/学生,如下所示:

TeacherBindingSource.DataSource = record.Teacher;
StudentBindingSourcce.DataSource = TeacherBindingSource;
StudentBindingSourcce.DataMember = "Student";

dataGridView1.DataSource =TeacherBindingSource;
dataGridView2.DataSource =  StudentBindingSourcce;

现在我失去了如何保存这条记录 如何将其保存到数据库中? 我想要一个。

           record.Save(); method that will save the whole object.

我可以遍历列表并逐个插入,但记录可能是 已存在于数据库中,因此我必须知道添加,更新或删除了哪条记录?

另外,如何制作一个能够填写教师/学生名单的方法,如:

           records.LoadTeachers();
           records.Teacher("Smith").LoadStudents();

1 个答案:

答案 0 :(得分:2)

你可能想看一下ORM(对象关系映射)库,比如微软实体框架或(我最喜欢的)NHibernate。它们存在的唯一理由是使持久化对象更容易进入关系数据库。他们可以创建新行,可以跟踪对象更新和对象之间的关系。您可以创建自己持久保存对象所需的逻辑,但已建立的ORM库已经成熟,广泛使用,并且可能比单个开发人员在合理的时间内提出的任何设计好得多。