我有一个供应商实体,每个供应商对象可能引用另一个供应商对象作为其“父”。实体框架4.1代码优先 - 无法删除两个实体之间的关系
public class Supplier
{
public int? Id { get; set; }
public virtual Supplier Parent { get; set; }
}
这一切都如预期,直到我试图删除的关系,如,供货商不再有父的作品。我可以将它从null更改为特定的供应商,我可以将其设置为不同的供应商,但将其设置为null不会在SaveChanges()后保留。
supplier.Parent = null;
供应商表中的外键“ParentId”被设置为可空。明确定义关系并没有帮助。
modelBuilder.Entity<Supplier>().HasOptional(s => s.Parent).WithMany();
我敢肯定我错过了一些明显的东西。
我们不使用外键属性,即ParentId – SeeNoWeevil 2012-01-09 11:26:06
有没有什么好的理由不? – 2012-01-09 12:38:12
我有同样的问题,斯蒂芬是正确的,你必须定义一个外键。见亚瑟维克斯的帖子在这里:http://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/35e7438b-ec1f-4d1f-bca0-539ccfb9abb1/ – Marthijn 2012-01-09 12:43:16