关于将实体保存到数据库的问题

Question regarding saving entity to database

假设我有这样的方法:

 public string SetSessionData(dynamic data, string token)
 {
        var request = (data as JObject).ToObject<SetRunSessionDataRequest>();

        var session = runSessionRepository.GetRunSessionWithToken(token);

        if (!string.IsNullOrEmpty(request.Id))
            session.Id = request.Id;

然后我想保存存储库中的更改class,这是怎么做到的? 这行得通吗?

public string SetSessionData(dynamic data, string token)
{
     var request = (data as JObject).ToObject<SetRunSessionDataRequest>();
    
     var session = runSessionRepository.GetRunSessionWithToken(token);
    
     if (!string.IsNullOrEmpty(request.Id))
        session.Id = request.Id;
            
      runSessionRepository.saveSession(session);

存储库 class 中的 saveSession 方法如下所示:

public void saveSession(session){ 
Session _session = session;
db.saveChanges();
}

所以我真正想问的是如何在存储库中进行保存 class 因为我在服务中没有数据库实例 class 我什至需要发送会话变量?感觉毫无意义,但如果我不这样做,它怎么知道要保存什么?它甚至可以节省任何东西吗?

我假设 db 是您存储库中的 DbContext,要保存您的 Session 对象,您需要在调用 db.SaveChanges(); 之前调用 db.Update(session);以便 EF Core 可以跟踪更改并在调用 SaveChanges 时保存它们。

例如:

public void SaveSession(session){ 
    db.Update(session);
    db.SaveChanges();
}

This article 可能有助于解释您的代码使用的模式以及您想要使用它的原因。