C# EF6编码具有相同类型导航属性集合的第一个实体-如何告诉EF关系是什么?
我不太了解EF,所以请容忍我在无知和困惑中跋涉。我有一个限制,我不能更改数据库结构 TBLGRADESC# EF6编码具有相同类型导航属性集合的第一个实体-如何告诉EF关系是什么?,c#,entity-framework,entity-framework-6,relationships,navigation-properties,C#,Entity Framework,Entity Framework 6,Relationships,Navigation Properties,我不太了解EF,所以请容忍我在无知和困惑中跋涉。我有一个限制,我不能更改数据库结构 TBLGRADES GRADEID GUID (PK) | GRADETITLE VARCHAR -------------------------------------------------------------- 882349d4-2564-4160-a034-2a5116dec389 | Cool Grade 59539804-5c47-46ac-873d-65
GRADEID GUID (PK) | GRADETITLE VARCHAR
--------------------------------------------------------------
882349d4-2564-4160-a034-2a5116dec389 | Cool Grade
59539804-5c47-46ac-873d-65b33ce6ac94 | Not so cool grade
b00d6cdd-3273-4f83-8d18-0c9e9a3e1562 | Lame Grade
GRADEID GUID (FK) | ELIGIBLEGRADEID GUID (FK)
----------------------------------------------------------------------------
882349d4-2564-4160-a034-2a5116dec389 | 59539804-5c47-46ac-873d-65b33ce6ac94
882349d4-2564-4160-a034-2a5116dec389 | b00d6cdd-3273-4f83-8d18-0c9e9a3e1562
TBLGRADESRELATIONSHIPS
GRADEID GUID (PK) | GRADETITLE VARCHAR
--------------------------------------------------------------
882349d4-2564-4160-a034-2a5116dec389 | Cool Grade
59539804-5c47-46ac-873d-65b33ce6ac94 | Not so cool grade
b00d6cdd-3273-4f83-8d18-0c9e9a3e1562 | Lame Grade
GRADEID GUID (FK) | ELIGIBLEGRADEID GUID (FK)
----------------------------------------------------------------------------
882349d4-2564-4160-a034-2a5116dec389 | 59539804-5c47-46ac-873d-65b33ce6ac94
882349d4-2564-4160-a034-2a5116dec389 | b00d6cdd-3273-4f83-8d18-0c9e9a3e1562
我想先用EF代码来表示这一点,我正在努力,因为我不知道EF是如何工作的,但我可以用EF代码生成来实现它。如果我不能首先使用代码让它工作,那么我就只能满足于EF代码gen。希望有人能清除我脑海中的乌云
实体
[Table("TBLGRADES")]
public class Grade
{
public GUID GradeId { get; set; }
public string GradeTitle { get; set; }
public virtual ICollection<Grade> EligibleGrades { get; set; }
}
请帮助我了解协会,以便我可以让它发挥作用。谢谢。我的第一篇SO帖子,所以请温和一点。这是一种(自我参照)多对多关系:一个等级可以有许多合格等级,一个等级可以是许多其他等级的合格等级。您可以将其视为Grade
实体有另一个(隐藏)集合,如:
public class Grade
{
public GUID GradeId { get; set; }
public string GradeTitle { get; set; }
public virtual ICollection<Grade> EligibleGrades { get; set; }
public virtual ICollection<Grade> GradesThisIsAnEligibleGradeFor { get; set; }
}
您问题中的最后一个代码段现在应该可以使用此映射,并给出您期望的结果。这绝对是完美的!在参数less WithMany()上,我假设如果我想向上遍历图形以找出当前等级符合条件的等级,我必须在那里配置它?还是我理解错了?@user3215462:是的,然后你会使用
。和许多(g=>g.GradesThisIsAnEligibleGradeFor)
。