c# - 如果不存在,则更新项目或创建新项目 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
。有什么帮助吗?
解决方案
以下将对您有所帮助。您应该附加或更新实体,不是吗?
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
}
推荐阅读
- sql - SQL 每周创建列(循环?)
- android - 如何从服务器 url 在底部导航视图中设置用户个人资料图像
- computer-science - 格子上的 sum-product 消息传递和带循环的 LDPC 图上的 sum-product 消息传递之间的区别
- microsoft-teams - 带有可配置身份验证服务器的 Microsoft Teams 搜索消息扩展
- reactjs - WebStorm 自动创建 .tsx 时创建 .js 文件
- javascript - Webpack 5 - 未捕获的 ReferenceError:未定义进程
- arrays - 数组中元素的默认值是多少?
- ios - 使用参数错误快速将图像上传到服务器
- docker - 由于 /var/cache/prod/pools/ 文件夹权限问题,Symfony 应用程序突然关闭
- asp.net-core - 如何在 Azure DevOps 管道中使用 ASP.NET Core 依赖项运行 XUnit 测试?