如何在 Entity Framework Core 中设置连接表并通过 API 保存?

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

在我的项目中,我使用数据库优先的方法。我有一个 Sessions 类,需要从另一个名为 Explanation 的表中获取一个或多个值。

public class Session : Table {
    public IList<SessionExplanations>? SessionExplanations { get; set; }
}

public class Explanation : Table
{
    public IList<SessionExplanations>? SessionExplanations { get; set; }
}

[PrimaryKey(nameof(SessionId), nameof(ExplanationId))]
public class SessionExplanations
{
    public long SessionId { get; set; }

    [ForeignKey("SessionId")]
    public Session? Session { get; set; }

    public long ExplanationId {  get; set; }

    [ForeignKey("ExplanationId")]
    public Explanation? Explanation { get; set; }
}

在一页中,我填写一个表格并选择一个或多个解释与此会话关联。我有一个最小的 API 将 Session 保存到数据库。如果记录是新的,我就没有 ID。所以,我不知道如何形成 json 作为有效负载,以保存会话和连接表中的所有详细信息。

在API中,我是否必须将保存分成两部分,首先保存Session,然后当我有ID时将数据保存在连接表中?

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

由于 SessionId 是在保存会话时由数据库生成的,因此您需要遵循两步过程来保存会话和关联的 SessionExplanations:

1- 将会话对象保存到数据库,数据库将生成并返回SessionId。

2- 获得 SessionId 后,您就可以保存 SessionExplanations 对象。

但是,可以将此过程简化为单个 API 调用。您可以构建 API 以接受包含会话对象及其相关解释 ID 的完整负载。然后,在服务器端的单个事务中处理两个保存操作。

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