当要删除的子模型没有父模型的 1:many 属性时,如何告诉实体框架设置 1:1 FK 条目?

问题描述 投票:0回答:1

我有一个父对象,如下:

public class Event
{
    public int Id { get; private set; }
    public Interest? Interest { get; set; }
}

public class Interest
{
    public int Id { get; private set; }
    // no List<Event> Events { get; set; }
}

因此每个

Event
对象都有 0 或 1 个
Interest
对象。许多事件可以指向相同的兴趣。

当我删除兴趣对象时,我希望将数据库中该兴趣是删除兴趣的每个 Event.Interest 设置为 null。有没有办法在 EF 中声明这一点?

或者我需要读取所有这些Event对象,将它们的Interest设置为null,然后保存它们?

或者有没有办法通过实体框架传递一条 SQL 语句,将所有当前设置为要删除的 Interest.Id 的底层 Event.InterestId 设置为 null?

c# .net entity-framework entity-framework-core
1个回答
0
投票

您可以在配置关系时设置级联选项 - 请参阅级联删除文档。类似于以下内容:

modelBuilder.Entity<Event>()
    .HasOne<Interest>(e => e.Interest)
    .WithOne()
    .HasForeignKey<Interest>("EventId")
    .OnDelete(DeleteBehavior.SetNull) // Or DeleteBehavior.ClientSetNull
    .IsRequired(false);

我还建议公开导航属性:

public class Interest
{
    public int Id { get; private set; }
    public Event Event { get; set; }
}

另请阅读:

© www.soinside.com 2019 - 2024. All rights reserved.