我正在尝试这样做:
Hibernate: Parent-Child Relationship to Itself
但在ASP.NET MVC 4中
这是我的两个模型(我不知道这是否是正确的方法):
public class Group
{
public int GroupID { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
public virtual ICollection<GroupRelation> GroupRelations { get; set; }
}
public class GroupRelation
{
public int GroupRelationID { get; set; }
public int? ParentID { get; set; }
public int? ChildID { get; set; }
[ForeignKey("ParentID")]
public virtual Group ParentGroups { get; set; }
[ForeignKey("ChildID")]
public virtual Group ChildGroups { get; set; }
}
这是我的上下文(再次不知道这是否正确):
public class TaskTrackerContext : DbContext
{
public DbSet<Group> Groups { get; set; }
public DbSet<GroupRelation> GroupRelations { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Group>()
.HasMany(g => g.GroupRelations).WithOptional(g => g.ChildGroups).HasForeignKey(g => g.ChildID);
modelBuilder.Entity<Group>()
.HasMany(g => g.GroupRelations).WithOptional(g => g.ParentGroups).HasForeignKey(g => g.ParentID);
}
}
通过此设置,我在我的数据库中获得以下内容:
(我试图放入图片或链接到图片,它不会让我......)
因此它使我想要的“PK_GroupID - FK_ParentID”和“PK_GroupID - FK_ChildID”这两个关系,但它创建一个名为“Group_GroupID”的额外列,并建立以下关系:“PK_GroupID - FK_Group_GroupID”。
那么我做错了什么?