我正在尝试使用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);
知道我该怎么做吗?
答案 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);