2013-06-27 54 views
0

我正在使用实体框架5与Code First和延迟加载禁用。鉴于以下几点:为什么我需要在我的子类中使用EF5的虚拟属性?

public class Department 
{ 
    public int DepartmentID { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<Course> Courses { get; set; } 
} 

public class Course 
{ 
    public int CourseID { get; set; } 
    public string Title { get; set; } 
    public int Credits { get; set; } 
    public int DepartmentID { get; set; } 
    public virtual Department Department { get; set; } 
} 

// Mapping Relationships for Course 

<code here> 
this.HasRequired(t => t.Department) 
.WithMany(t => t.Courses) 
.HasForeignKey(d => d.DepartmentID); 

有人可以解释为什么我会需要有:如果我完全删除这一行

public virtual Department Department { get; set; } 

会发生什么?我不能做什么?据我所见,我唯一不能做的就是使用Entity Framework来检查我的外键。不过,我已经在数据库中设置了这个设置,所以我仍然会从Db中得到一个错误。

回答

1

部门属性作为指向某个课程的特定部门的链接而存在。 它可以是一对多关系的一部分,它使您能够访问课程中的部门。

+0

但是我不知道,因为我有DepartmentID? – Alan2

+0

DepartmentId很有用,但Department属性包含Department实体的所有列。如果您需要了解有关部门的详细信息(名称等),那么这很方便 - 在使用课程时 – TGH

1

它包含了你的Department信息,Depertment NameCourses information.I认为你可以将其删除,因为Department的信息,你也可以通过搜索其DepartmentID访问。但保留它会更好。

+0

谢谢。我确实尝试删除它,但它给了我一个错误的映射。我添加了映射的代码,以便您可以看到。如果我删除该行,是否有另一种方法可以执行映射? – Alan2

相关问题