Fluent API映射复合模式对象

时间:2013-09-02 16:06:20

标签: entity-framework ef-code-first fluent-interface composite-primary-key

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

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);

知道我该怎么做吗?

1 个答案:

答案 0 :(得分:3)

如果我明白你的目的是什么 - Category可以将很多类别作为孩子。

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

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);