C# 删除具有一对一可选关系的实体时EntityFramework错误
当我试图删除一个实体,该实体通过一对一的关系与另一个实体相关,两端都是可选的,我有以下错误: 来自“陪审团席位”的关系在 “已删除”状态。给定多重性约束,相应的 “陪审团插槽目标”也必须处于“已删除”状态 我的实体:C# 删除具有一对一可选关系的实体时EntityFramework错误,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,当我试图删除一个实体,该实体通过一对一的关系与另一个实体相关,两端都是可选的,我有以下错误: 来自“陪审团席位”的关系在 “已删除”状态。给定多重性约束,相应的 “陪审团插槽目标”也必须处于“已删除”状态 我的实体: public class ApplicantTest { [Key] public int Id { get; set; } // some other properties public virtual JurySlot JurySlot {
public class ApplicantTest
{
[Key]
public int Id { get; set; }
// some other properties
public virtual JurySlot JurySlot { get; set; }
}
public class JurySlot
{
[Key]
public int Id { get; set; }
// some other properties
public virtual Jury Jury { get; set; }
public virtual ApplicantTest ApplicantTest { get; set; }
}
public class Jury
{
[Key]
public int Id { get; set; }
public virtual ICollection<JurySlot> Slots { get; set; }
}
在调用Remove()之前,我尝试了注释的内容,但没有成功
有人有想法吗?无法解释原因(我想这是EF的一个小谜团),但从相应的DbSet
中删除就可以了:
...
//existing.Slots.Remove(lastSlot);
context.JurySlots.Remove(lastSlot);
context.SaveChanges();
执行以下命令:
UPDATE [dbo].[ApplicantTests]
SET [JurySlot_Id] = NULL
WHERE (([Id] = @0) AND ([JurySlot_Id] = @1))
DELETE [dbo].[JurySlots]
WHERE (([Id] = @0) AND ([Jury_Id] = @1))
您似乎有一个实体
curry\u Slot\u Target
,它与curry\u Slot
有关系。谢谢,它可以工作!我不认为直接从上下文中删除。
...
//existing.Slots.Remove(lastSlot);
context.JurySlots.Remove(lastSlot);
context.SaveChanges();
UPDATE [dbo].[ApplicantTests]
SET [JurySlot_Id] = NULL
WHERE (([Id] = @0) AND ([JurySlot_Id] = @1))
DELETE [dbo].[JurySlots]
WHERE (([Id] = @0) AND ([Jury_Id] = @1))