1

我正在尝试在实体框架 5.0 上使用 FluentAPI 为以下模型映射复合对象:

public class Category
{
    public int CategoryId { get; set; }
    public string CategoryName { get; set; }
    public virtual ICollection<Category> Children { get; set; }
}

到目前为止尝试了很多效果不佳的方法,例如以下:

HasKey(t => t.CateroryId);
HasOptional(c => c.Children)
   .WithMany()
   .HasForeignKey(c => c.CateroryId);

知道我该怎么做吗?

4

1 回答 1

3

如果我明白你的目的 - aCategory可以有很多类别作为孩子。

我过去曾使用类似的外键映射和一些附加属性来完成此操作,尽管可能有一种方法可以使用独立关联来完成此操作。

向您添加其他属性,Category以便我们可以跟踪父/子关系:

public class Page
{
    public int CategoryId { get; set; }
    public string CategoryName { get; set; }
    public int? ParentID { get; set; } // Nullable (Parent is optional).

    // Navigation properties
    public virtual Category Parent { get; set; } // Optional Parent
    public virtual ICollection<Category> Children { get; set; }
}

然后,您应该能够像这样进行配置(取决于您的映射设置的位置):

this.HasMany(c => c.Children)        // Many Children
    .WithOptional(c => c.Parent)     // Optional Parent
    .HasForeignKey(x => x.ParentID);
于 2013-09-02T16:19:49.030 回答