在学生信息管理系统中,共有4张表需要创建。
E-R图如下所示。
其中,1个专业包含多个班级,1个年级也包含多个班级,年级和专业之间是多对多的关系,1个班级中包含多个学生。
在项目根目录下创建一个名为Models的文件夹。
右键点击Models文件夹,选择【添加-类】,选择类,名称填写Major.cs,点击添加。
重复此过程,创建Grade.cs、Class.cs、Student.cs。
注意Class要大写,小写的class是C#的关键字
在E-R图中,专业只有一个专业名称属性,因此,需要在专业模型中添加一个string类型的Name属性。
除此之外,模型还需要一个主键,因此,还需要添加一个Guid类型的Id属性。
Guid是一个128位的随机数,基本上不用担心会重复
最后,由于专业和班级是1对多的关系,因此还需要添加一个班级列表类型的属性作为导航。
最终代码如下:
public class Major
{
public Guid Id { get; set; }
public string Name { get; set; } = string.Empty;
public List<Class> Classes { get; } = new List<Class>();
}
年级模型和专业模型几乎一样,因此可以直接将专业模型的代码复制,最终代码如下:
public class Grade
{
public Guid Id { get; set; }
public string Name { get; set; } = string.Empty;
public List<Class> Classes { get; } = new List<Class>();
}
首先需要在班级模型中添加一个Name属性和Id属性。
由于专业和班级之间是1对多的关系,还需要添加Guid类型的MajorId作为外键。
由于年级和班级之间也是1对多的关系,也需要添加Guid类型的GradeId作为外键。
除此之外,还需要添加班级模型到专业模型以及班级模型到年级模型的导航,因此还需要添加一个Major类型的属性Major以及一个Grade类型的属性Grade。
最后,由于班级和学生之间是1对多的关系,因此还需要添加一个学生列表类型的属性作为导航。
最终代码如下:
public class Class
{
public Guid Id { get; set; }
public string Name { get; set; } = string.Empty;
public Guid MajorId { get; set; }
public Guid GradeId { get; set; }
public Major Major { get; set; } = null!;
public Grade Grade { get; set; } = null!;
public List<Student> Students { get; } = new List<Student>();
}
首先还是需要一个Guid类型的Id作为主键。
然后,根据E-R图,还需要创建一个学号属性Number。学号用int类型肯定是不够的,因为会超范围,因此可以使用long类型。但是,极端情况下long类型可能也无法存储某些学校的学号,因此这里我最终选择了string类型存储学号。
姓名属性Name还是使用string类型。
性别属性Gender可以使用bool类型存储。
生日属性Birthday可以使用DateTime类型存储。
然后添加班级模型的Id作为外键,以及添加学生模型到班级模型的导航。
最终代码如下:
public class Student
{
public Guid Id { get; set; }
public string Number { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public bool Gender { get; set; }
public DateTime Birthday { get; set; }
public Guid ClassId { get; set; }
public Class Class { get; set; } = null!;
}