[SOLVED] Question regarding saving entity to database

Issue

Lets say I have a method like:

 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;

And then I want to save the changes in the repository class, how is that done?
will this work?

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);

Where the saveSession method in the repository class looks like this:

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

So what I’m really asking is how do make the save in the repository class as I don’t have a DB instance in the service class and do I even need to send the session variable? It feels pointless but if I don’t how does it know what to save? Will it even save anything?

Solution

I’m assuming db is your DbContext in your repository, to save your Session object you need to call db.Update(session); before calling db.SaveChanges(); so that EF Core can track the changes and save them when SaveChanges is called.

For example:

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

This article might help explain the pattern it looks like your code is using and why you would want to use it.

Answered By – amura.cxg

Answer Checked By – Mary Flores (BugsFixing Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *