Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新现有父记录时未创建子记录_C#_Ef Core 3.0 - Fatal编程技术网

C# 更新现有父记录时未创建子记录

C# 更新现有父记录时未创建子记录,c#,ef-core-3.0,C#,Ef Core 3.0,我是论坛和C#的新手,请原谅我的误解!无论如何,自从将我们的产品升级到.net core 3.0之后,我们在更新和现有父记录时创建子记录时遇到了一些问题。在update调用之前,子对象在父对象上可见,但是在以下情况下,我会得到异常: 发生了一个或多个错误。(数据库操作预期会影响1 行,但实际影响了0行。数据可能已被修改或删除 已删除,因为已加载实体 如果在运行update命令之前在db中手动创建子记录,则子记录将更新,父记录将更新。请参阅下面的更新代码: public async Task Up

我是论坛和C#的新手,请原谅我的误解!无论如何,自从将我们的产品升级到.net core 3.0之后,我们在更新和现有父记录时创建子记录时遇到了一些问题。在update调用之前,子对象在父对象上可见,但是在以下情况下,我会得到异常:

发生了一个或多个错误。(数据库操作预期会影响1 行,但实际影响了0行。数据可能已被修改或删除 已删除,因为已加载实体

如果在运行update命令之前在db中手动创建子记录,则子记录将更新,父记录将更新。请参阅下面的更新代码:

public async Task UpdateAsync(T entity)
{            
    _context.Entry(entity).State = EntityState.Modified;            
    await _context.SaveChangesAsync();          
}
这个例外是由于什么原因造成的


更新父记录时,我需要更改哪些内容才能创建子记录?

该异常是由于更改跟踪出现问题造成的。通常,您不应该将通过post创建的实体添加到上下文中,尤其是对于更新。从数据库中提取现有实体,然后将发布的值映射到上面。嘿@ChrisPratt,谢谢你的评论。我不确定你所说的post是什么意思,UpdateAsync是存储库类中的一个调用。我确实调整了我的代码,先创建了两个对象,然后调用
public async Task AddAsync(T entity){u context.Set().Add(entity);wait _context.saveChangesSync();返回实体;}
这确实创建了父项和子项。但是我确实需要将调用作为一个更新。在更新父项以拥有上面代码中提到的新子项时,3.0和更改跟踪是否有问题?您从哪个版本更新?我发现这似乎是一个突破性的更改。