最近在学 EF4 POCO的应用, 感觉对我们开发人员来说是个非常的好东东, 不仅提高开发效率, 更能适应经常变化的项目需求。
一般的实体创建没什么大问题, 但树形结构实体的创建就要做些动手的活了。
例如:
public class Category
{
public int Id { get; set; }
public string Description { get; set; }
public int? ParentId { get; set; }
public bool? Editable { get; set; }
[ForeignKey("ParentId")]
public virtual ICollection<Category> Children { get; set; }
}
Children上设置了一个ForeignKey的属性,在生成数据表的时候会生成相应的外键约束, 这样在插入数据时就有问题了,如果表中一开始没有任何数据,则受此约束的影响会报错。好吧, 那我就先在数据库中手动插入一条数据做为根, 报错,则 删除外键约束,再试, 成功!
如果仅仅是把外键约束删除, 在插入数据时还是会报错, 这个错误不是数据库报的,而是EF框架代码报的, 由于设置了ForeignKey属性, 框架代码回去检查是否存在外键约束的值, 所有必须手动加入一条根数据。
万事开头难, 解决了开头,后面就好办了!!