c# - C# EF 核心批量插入给出错误无法跟踪实体类型“实体”的实例,因为另一个具有相同键的实例
问题描述
我想在 EF Core 的单个事务中插入一组记录。我是 EF Core 的新手。但是在循环的第二次迭代中添加实体时出现以下异常:
无法跟踪实体类型“Entity”的实例,因为已经在跟踪另一个具有相同 {'Id'} 键值的实例。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。考虑使用“DbContextOptionsBuilder.EnableSensitiveDataLogging”来查看冲突的键值。
我使用了工作单元和存储库模式。
这是创建代码块
if (_trmshedulePlan.Count > 0)
{
foreach (var item in _trmshedulePlan)
{
_trmShedulePlanRepository.Create(item);
}
_unitOfWork.Commit();
}
这是我的创建方法:
public void Create(T entity)
{
this.TRMContext.Entry(entity).State = EntityState.Detached;
this.TRMContext.Set<T>().Add(entity);
}
我已经对我的上下文创建服务进行了以下更改,但仍然出现错误。
services.AddDbContext<OnlineFeedbackContext>(options => options.UseSqlServer(Configuration.GetConnectionString("TRMDatabase")).UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking));
services.AddScoped<OnlineFeedbackContext>();
解决方案
推荐阅读
- swift - 如何为表格视图单元格和扩展单元格生成相同的随机颜色?
- amazon-web-services - 通知警报:超出上下文截止日期(可能的代理问题)
- reactjs - 使用 React 切换字体真棒图标
- angular - 通过使用路径宽度/高度在角度 7 中动态设置 SVG Viewbox
- google-sheets - 返回 #VALUE 的查询
- django-queryset - Django lte 和 gte 查询产生空查询集
- php - 从 PHP 中的多维数组中删除重复数组
- swift - 如何将双标签确认设置为新的 ios 主页滑动按钮?
- forms - 使用 Symfony 3 在 HTML 中添加验证码
- c# - 如何检查物体撞击地面的力度并在其周围产生爆炸性“力”