在我的项目中,我使用数据库优先的方法。我有一个 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时将数据保存在连接表中?
由于 SessionId 是在保存会话时由数据库生成的,因此您需要遵循两步过程来保存会话和关联的 SessionExplanations:
1- 将会话对象保存到数据库,数据库将生成并返回SessionId。
2- 获得 SessionId 后,您就可以保存 SessionExplanations 对象。
但是,可以将此过程简化为单个 API 调用。您可以构建 API 以接受包含会话对象及其相关解释 ID 的完整负载。然后,在服务器端的单个事务中处理两个保存操作。