ASP.NET MVC 4中的父子关系

时间:2013-04-09 17:46:41

标签: asp.net-mvc-4

我正在尝试这样做:

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”。

那么我做错了什么?

0 个答案:

没有答案