【问题标题】:Update item or create new if does not exist C#如果不存在,则更新项目或创建新项目 C#
【发布时间】:2021-01-26 19:14:50
【问题描述】:

假设有一个属于某个人的工作记录,在第一个 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


    【解决方案1】:

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

    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
         }
    

    【讨论】:

    • 感谢您的回复 - 在 if 语句中获取无法将类型 bool 隐式转换为 system.data.entity.entitystate 错误
    • _db.Entry.Update(item);行和 _db.Entry.Add(item);抛出以下错误 '...Is a 'method' which is not valid in the given context' 错误
    • 思路是这样,你应该根据你的代码找到它应该如何实现的方式。
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2017-06-11
    • 2017-01-31
    • 1970-01-01
    • 2021-08-06
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多