首页 > 解决方案 > 如果不存在,则更新项目或创建新项目 C#

问题描述

假设有一个属于某个人的工作记录,在第一个 foreach 语句中,我们只是更新我们一直拥有的信息 - 这工作正常且符合预期。

对于第二个 foreach 语句,JobTasks我们可能已经知道或没有相关信息,因此预期的行为是检查 ID 是否存在,如果不存在,则像第一次创建它一样添加它。

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

当我继续尝试第一次添加它时,它不会在表中添加记录JobTasks。有什么帮助吗?

标签: c#sql.net

解决方案


以下将对您有所帮助。您应该附加或更新实体,不是吗?

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
     }

推荐阅读