EF Core 不会将可为空字段的值设置为 NULL



>我有一个实体,它有一个可空的 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。我猜你没有清除这个对象。

填写RelatedStepIdRelatedStep中的一个足以让EF保存该值,如果您不想要它,则必须清除它们。