C# 删除时无法在列中插入NULL

C# 删除时无法在列中插入NULL,c#,entity-framework,C#,Entity Framework,我正在使用实体框架执行一个Remove()。当我尝试运行SaveChanges()时,我被告知不能将NULL插入不允许的列中。这对我来说很奇怪,因为我没有执行任何INSERT,我检查了30个现有条目中的每一个,以发现它不应该尝试在该列中使用null保存表 以下是相关代码: var user = db.AspNetUsers.FirstOrDefault(u => u.Id == userId); if (user != null) { var itemsToRemove = use

我正在使用实体框架执行一个
Remove()
。当我尝试运行
SaveChanges()
时,我被告知不能将NULL插入不允许的列中。这对我来说很奇怪,因为我没有执行任何
INSERT
,我检查了30个现有条目中的每一个,以发现它不应该尝试在该列中使用null保存表

以下是相关代码:

var user = db.AspNetUsers.FirstOrDefault(u => u.Id == userId);
if (user != null)
{
    var itemsToRemove = user.ItemXrefs.Where(i => !itemIDs.Contains(i.ItemID)).ToList();

    foreach (var xref in itemsToRemove)
    {
        user.ItemXrefs.Remove(xref);
    }

    db.SaveChanges();
    //...
}
请尝试以下方法:

itemXrefSet = db.Set<ItemXref>();
foreach (var xref in itemsToRemove)
{
    itemXrefSet.Remove(xref);
}
db.SaveChanges();
itemXrefSet=db.Set();
foreach(itemsToRemove中的变量外部参照)
{
itemXrefSet.Remove(外部参照);
}
db.SaveChanges();
这将从动名词表中删除交叉引用实体以及它链接在一起的两个实体之间的关系


您尝试这样做时遇到错误的原因是EntityFramework认为您只想删除关系而不删除相关实体。当EF执行此操作时,它会尝试将依赖表中的外键列设置为NULL。解决方法是通过更改UserId列值将表行与另一个用户关联,或者删除表行,因为您不能将所需的列值设置为NULL。

您能提供实际的异常和涉及的POCO类吗?是否是正在从中删除的实体或相关实体上发生的错误?您正在查询
user.ItemXfefs
,然后从
user.Items
中删除结果,这有点令人困惑。您不应该从查询的同一集合中删除项目吗?或者至少验证
user.Items
是否包含您要删除的项目?@RufusL在简化我的代码时犯了一个错误-修复了它。我打赌这与所需的关系有关(不是空外键列)。是要删除关系还是删除实体?只需删除关系即可。顾名思义,它肯定是一个链接(“交叉引用”)表,所以我只是想从链接表中删除该条目(不涉及链接的两个实体)。