C# 实体框架&x27;s内置式一对多

C# 实体框架&x27;s内置式一对多,c#,entity-framework,C#,Entity Framework,我对EntityFramework有点陌生,面临以下问题: 我使用虚拟属性创建延迟加载上下文 public class Faculty { [Key] public Guid FacultyIdentifier { get; set; } public string FacultyAcronym { get; set; } public virtual ICollection<Student> FacultyStudents { get; set; }

我对EntityFramework有点陌生,面临以下问题: 我使用虚拟属性创建延迟加载上下文

public class Faculty
{
    [Key]
    public Guid FacultyIdentifier { get; set; }
    public string FacultyAcronym { get; set; }
    public virtual ICollection<Student> FacultyStudents { get; set; }
    public virtual ICollection<Subject> FacultySubjects { get; set; }
    public virtual ICollection<Course> FacultyCourses { get; set; }

    public Faculty()
    {
        FacultyIdentifier = Guid.NewGuid();
        FacultyStudents = new List<Student>();
        FacultySubjects = new List<Subject>();
        FacultyCourses = new List<Course>();
    }
 }
公共课教师
{
[关键]
公共Guid FacultyIdentifier{get;set;}
公共字符串FacultyAcronym{get;set;}
公共虚拟ICollection FacultyStudents{get;set;}
公共虚拟ICollection FacultySubjects{get;set;}
公共虚拟ICollection FacultyCourses{get;set;}
公共学院()
{
FacultyIdentifier=Guid.NewGuid();
FacultyStudents=新列表();
FacultySubjects=新列表();
FacultyCourses=新列表();
}
}
并使用PKs和FKs在数据库中正确创建了4个表。 然而,当我做以下事情时:

[Table("CourseRecordsTable")]
public class Course
{
    [Key]
    public Guid CourseIdentifier { get; set; }
    public virtual Faculty Faculty { get; set; }
    public string SubjectCode { get; set; }

    public virtual ICollection<Guid> AttendeeStudents { get; set; }

    public Course()
    {
        CourseIdentifier = Guid.NewGuid();
        AttendeeStudents = new List<Guid>();
    } 

}
[表格(“CourseRecordsTable”)]
公共课
{
[关键]
公共Guid CourseIdentifier{get;set;}
公共虚拟教员{get;set;}
公共字符串SubjectCode{get;set;}
公共虚拟ICollection{get;set;}
公共课程()
{
CourseIdentifier=Guid.NewGuid();
AttendedStudents=新列表();
} 
}

在这里,它无法为学生创建另一个表。我认为这是因为我没有为Guid定义类,因为它是内置类型。那么,我该如何解决这个问题呢?在每门课程中都有学员列表:我应该将他们存储为I学生集合还是学生ID(Guid)集合?

我首先不太熟悉EF的代码。但是从数据库的角度来看,您需要创建一个只包含您的guid的新表。因此,创建一个新类
attendestudent
,只添加一个类型为
Guid
的属性/列
Id
。并将您的
ICollection
更改为
ICollection
如果您将其更改为
ICollection
,EF将使用自动链接表在
课程
学生
之间创建多对多关系。如果您希望它是一对多,那么
学生
必须具有
课程
属性。我首先不太熟悉EF的代码。但是从数据库的角度来看,您需要创建一个只包含您的guid的新表。因此,创建一个新类
attendestudent
,只添加一个类型为
Guid
的属性/列
Id
。并将您的
ICollection
更改为
ICollection
如果您将其更改为
ICollection
,EF将使用自动链接表在
课程
学生
之间创建多对多关系。如果希望它是一对多,则
学生
必须具有
课程
属性。