You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决C#中查询多条数据却重复存储同一条至数据库表的问题

解决数据重复插入的问题

可能的原因及排查步骤

1. 源数据本身重复

先确认premArrearsGet中的3条数据的REG_NUMBER和AUTO_NUMBER是否真的不同:

  • 在断点处展开premArrearsGet的每个元素,查看这两个属性的具体值。如果3条数据的这两个属性完全一致,那么插入重复数据是预期行为,需要重新检查查询条件Where(e => e.REG_NUMBER == REG_NUMBER_PL)是否正确筛选出了不同的记录。

2. 实体属性映射错误

检查prem_arrears_pl实体的配置:

  • 确认AUTO_NUMBER和REG_NUMBER没有被配置为自增列(比如使用[DatabaseGenerated(DatabaseGeneratedOption.Identity)]特性),否则你手动赋值的属性值会被数据库的自增逻辑覆盖,导致插入的数据不符合预期。
  • 验证实体属性与数据库列的映射关系,确保没有出现属性映射到错误列的情况(比如两个属性映射到同一列)。

3. 代码调试与验证

修改代码添加日志输出,确认循环中每个实体的赋值是否正确:

var premArrearsGet = await _autoLISContext.PremArrears.Where(e => e.REG_NUMBER == REG_NUMBER_PL).ToListAsync();

foreach (var premArrearsItem in premArrearsGet)
{
    // 添加日志输出,确认当前迭代的属性值
    Console.WriteLine($"当前item: REG_NUMBER={premArrearsItem.REG_NUMBER}, AUTO_NUMBER={premArrearsItem.AUTO_NUMBER}");
    
    var newEntity = new prem_arrears_pl
    {
        REG_NUMBER = premArrearsItem.REG_NUMBER,
        AUTO_NUMBER = premArrearsItem.AUTO_NUMBER,
    };
    
    // 验证新实体的属性值
    Console.WriteLine($"新实体: REG_NUMBER={newEntity.REG_NUMBER}, AUTO_NUMBER={newEntity.AUTO_NUMBER}");
    
    _context.PremArrearsPL.Add(newEntity);
}
await _context.SaveChangesAsync();

运行后查看日志,如果输出的每个newEntity的属性值都是第一条数据的值,说明premArrearsGet的数据源确实存在重复,或者查询逻辑有问题。

4. 上下文状态检查

确认_context没有被意外复用或者存在状态跟踪异常:

  • 可以尝试在循环中使用全新的上下文实例(仅用于测试),看是否还会出现重复插入的情况:
using(var tempContext = new YourDbContext())
{
    foreach (var premArrearsItem in premArrearsGet)
    {
        var newEntity = new prem_arrears_pl
        {
            REG_NUMBER = premArrearsItem.REG_NUMBER,
            AUTO_NUMBER = premArrearsItem.AUTO_NUMBER,
        };
        tempContext.PremArrearsPL.Add(newEntity);
    }
    await tempContext.SaveChangesAsync();
}

如果使用临时上下文后问题解决,说明原_context存在状态管理的异常(比如之前的实体跟踪导致重复添加)。

内容的提问来源于stack exchange,提问作者Cyrus Yabut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:53:16