Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
169 views
in Technique[技术] by (71.8m points)

sql - Update item or create new if does not exist C#

Say there is a job record that belongs to a person, in the first foreach statement we are just updating the info we always already have - this works fine and as intended.

For the second foreach statement, JobTasks is something we may already have info on or not, so the intended behaviour is to check if the ID is present, if not add it like it's being created for the first time.

private void UpdateAnswers(Job job)
{
    foreach (var item in job.JobInfo)
    {
        _db.Entry(item).State = EntityState.Modified;
    }

    foreach (var item in job.JobTasks)
    {
        _db.Entry(item).State = item.JobID == 0 ?
                                   EntityState.Added :
                                   EntityState.Modified; 
    }
}

When I proceed further trying to add it for the first time it does not add the record in the table JobTasks. Any help?

question from:https://stackoverflow.com/questions/65907800/update-item-or-create-new-if-does-not-exist-c-sharp

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Following would help you. You should attach or update the entity, isn't it?

private void UpdateAnswers(Job job)
    {
        foreach (var item in job.JobInfo)
        {
            _db.Entry(item).State = EntityState.Modified;
            _db.Entry.Update(item);
        }

        foreach (var item in job.JobTasks)
        {
          
            if(item.JobID != 0)
            {
              _db.Entry(item).State = EntityState.Modified;
              _db.Entry.Update(item);
            }else{
               _db.Entry(item).State = EntityState.Added;
               _db.Entry.Add(item);
            }                                  
        }
       //Save Changes
     }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...