实体框架(版本 5)在删除引用的对象时将外键属性设置为 null。例如:
public class Category
{
public int Id {get;set;}
public virtual Category ParentCategory {get;set;}
public virtual ICollection<Category> ChildCategories {get;set;}
}
由于文档http://msdn.microsoft.com/en-us/library/bb738695.aspx,删除父类别时,EF 会将所有子类别的 ParentCategory 设置为 null。
我的问题是如何通过在删除父类而不是将子类作为孤儿类时抛出异常来防止这种默认行为?
一种可能的方法是挂钩 DbContext.SaveChanges(),检查 ChildCategories.Any() 是否并抛出异常,但它看起来很难看 :-(