>我有一个实体,它有一个可空的 int,它是自身的一对一外键。简化,这是实体:
public class Step
{
public int StepId { get; set; }
public string Foo { get; set; }
public int? RelatedStepId { get; set; }
[ForeignKey("RelatedStepId")]
public Step RelatedStep { get; set; }
}
这工作正常 - 我能够将RelatedStepId
设置为另一条记录StepId
的值。但是,有时我需要打破这种关系。如果我将RelatedStepId
设置为null
然后保存更改,则该字段将保留其先前的值。我已经验证了RelatedStepId
确实是null
,但是当我记录正在生成的 SQL 时(使用 .启用敏感数据日志记录((,所以我可以看到值(我可以看到它在SQL中传递以前的值,而不是null
。
我觉得我一定错过了一些简单的东西,但我一直在搜索和搜索,到目前为止,我还没有找到与此特定问题相关的任何内容。如何让 EF Core 实际发送null
作为RelatedStepId
的值?
你也应该将RelatedStep
设置为 null。我猜你没有清除这个对象。
填写RelatedStepId
或RelatedStep
中的一个足以让EF
保存该值,如果您不想要它,则必须清除它们。