EntityFramework 设置树结构关系

实例数据结构

public class Category {
    public int CategoryId { get; set; }
    public string Name { get; set; }
    //父节点 类型必须设置允许为空   
    public int? ParentId { get; set; }
    //这里为当前结构的父实体    
    public Category Parent { get; set; }
    //这里为当前结构的子对像实体    
    public List<Category> Children { get; set; }
}

 

  数据上下文关系设置

//设置为可选
Property(c => c.ParentId).IsOptional();
//外键父节点和主键的关系
HasMany(c => c.Children).WithOptional(c => c.Parent).HasForeignKey(c => c.ParentId);
//使用下面的外键关系和上面的效果一样
//HasOptional(c => c.Parent).WithMany(c => c.Children).HasForeignKey(c => c.ParentId);

 

  设置完关系和实体后可以直接嵌套使用了,ParentId不需要填写,会自动对应主实体!

context.Categories.Add(new Category { 
Name = "test",
Children=new List<Category>{
new Category{Name = "test1"}
} });


希望对大家有所帮助。

posted @ 2013-05-12 10:22  □『孤獨~寂  阅读(260)  评论(0)    收藏  举报