相关疑难解决方法(0)

EF 4:从集合中删除子对象不会删除它 - 为什么?

我使用实体框架4,我与"级联删除"设置有父子关系.所以当我调用SaveChanges()时,当我从父母中删除孩子时,我会期望删除孩子.

        cuRepository.Attach(_controlUnit);
        foreach (var recipe in recipes) {
            _controlUnit.Recipes.Remove(recipe);
            //repository.DeleteObject(recipe);
        }
Run Code Online (Sandbox Code Playgroud)

相反,我得到一个错误:

发生System.InvalidOperationException消息=操作失败:无法更改关系,因为一个或多个外键属性不可为空.当对关系进行更改时,相关的外键属性将设置为空值.如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象.

当我明确删除子项(请参阅注释行)时,一切都很好.我错过了什么?

linq entity-framework entity-framework-4

33
推荐指数
4
解决办法
3万
查看次数

与Code First的单向一对多关系

我在Contact和Phone之间有一对多的单向关系,定义如下:

class Contact {
    int ContactId {get; set}
    ICollection<Phone> Phones {get; set}
}
class Phone {
    int PhoneId {get; set;}
    string PhoneNumber {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

现在在域层中,我尝试执行以下操作:

someContact.Phones.Remove(somePhone);
Run Code Online (Sandbox Code Playgroud)

当我试图打电话时context.SaveChanges()我得到一个例外,因为这种关系被定义为必需(例如,没有联系人就不能存在电话).
如何在不使用电话中的外键或导航属性的情况下解决此问题,而无需在呼叫DbSet<Phone>.Remove(Phone)前进行呼叫SaveChanges()

.net c# ado.net entity-framework ef-code-first

7
推荐指数
1
解决办法
622
查看次数