c# - 在单个事务中在父子表中插入记录但是当发送多个对象时,我给出了错误实例!无法跟踪实例
问题描述
我得到这个例外:
无法跟踪实体类型“CameraActivity”的实例,因为已经在跟踪另一个具有相同键值的实例 {'ActivityId', 'FeatureId', 'CamId'}。
附加现有实体时,请确保仅附加一个具有给定键值的实体实例。
考虑使用 'DbContextOptionsBuilder.EnableSensitiveDataLogging' 来查看冲突的键值。"}
这是我的 Post 方法
public async Task<ActionResult<Camera>> PostCamera(Camera camera)
{
var cameraRecodExists = _context.Cameras.FirstOrDefault(C => C.IPAdress == camera.IPAdress) ;
if (cameraRecodExists !=null)
{
return StatusCode(StatusCodes.Status500InternalServerError, new Response { Status = "Error", Message = "Record Already Exists" });
}
else
{
_context.Cameras.Add(camera);
// _context.SaveChanges();
foreach (var activity in camera.CameraActivities)
{
activity.CamId = camera.CamId;
activity.ActivityId = camera.CameraActivities.First().ActivityId;
activity.FeatureId = camera.CameraActivities.First().FeatureId;
}
_context.CameraActivities.AddRange(camera.CameraActivities);
try
{
await _context.SaveChangesAsync();
}
catch(Exception ex)
{
var a = ex;
}
return CreatedAtAction("GetCamera", new { id = camera.CamId }, camera);
}
}
解决方案
您可以参考官方文档camera
并尝试保存camera.CameraActivities
:
public async Task<ActionResult<Camera>> PostCamera(Camera camera)
{
var cameraRecodExists = _context.Cameras.FirstOrDefault(C => C.IPAdress == camera.IPAdress) ;
if (cameraRecodExists !=null)
{
return StatusCode(StatusCodes.Status500InternalServerError, new Response { Status = "Error", Message = "Record Already Exists" });
}
else
{
_context.Cameras.Add(camera);
try
{
await _context.SaveChangesAsync();
}
catch(Exception ex)
{
var a = ex;
}
return CreatedAtAction("GetCamera", new { id = camera.CamId }, camera);
}
}
推荐阅读
- javascript - ng generate @angular/material:material-nav --name=main-nav 正确生成文件但它们不运行
- python - python FileNotFoundError: [Errno 2] 具有绝对路径和文件存在
- arrays - Swift:数组引用作为对象属性?
- c++ - C++:我可以重用/移动 std::list 元素从中间到结尾吗?
- python - python中的'TypeError:zip参数#1必须支持迭代'
- swift - Swift 协议扩展 - 无法访问 Func
- c++ - 创建具有对齐内存的 Direct3D 表面?
- jquery - 数据表 - 添加单个列选择过滤会删除固定列
- javascript - 在不打开文件上传窗口的情况下上传文件
- lua - 让 NPC 看起来像 ROBLOX 中的玩家