首页 > 解决方案 > 在 EF Core 中为新创建的实体应用自引用 ID

问题描述

我继承了一个具有实体父/子层次结构的项目。尽管 ParentId 可以为空,但它的设计使得没有父级的实体将其 ParentId 设置为自己的 Id。有很多工作流程依赖于这个约定,所以必须继续遵循。

在一次数据库行程中创建新实体时,我可以做些什么来将 ParentId 设置为实体的 ID?现在我只是在没有 ParentId 的情况下保存它,获取新生成的 Id,将它也分配给 ParentId,然后再次保存。

public partial class Entity
{
    public long Id { get; set; }
    public long? ParentId { get; set; }
}

标签: c#entity-framework-core

解决方案


如果您这样做,它应该由 EF 自动处理:

public partial class Entity
{
    public long Id { get; set; }
    public long? ParentId { get; set; }
    public Entity Parent { get; set; }
}

var entity = new Entity();
entity.Parent = entity;
SaveChanges();

推荐阅读