| | |
| | | }).ToList(); |
| | | } |
| | | |
| | | ///// <summary> |
| | | ///// 生成新的主表ID,确保不重复 |
| | | ///// </summary> |
| | | //private decimal GenerateNewId() |
| | | //{ |
| | | // // 处理空表的情况,从1开始 |
| | | // var maxId = Db.Queryable<MesRohIn>().Max(x => (decimal?)x.EbelnK3id) ?? 0; |
| | | // var newId = maxId + 1; |
| | | |
| | | // // 双重检查,确保生成的ID不存在 |
| | | // while (Db.Queryable<MesRohIn>().Where(x => x.EbelnK3id == newId).Any()) |
| | | // { |
| | | // newId++; |
| | | // } |
| | | |
| | | // return newId; |
| | | //} |
| | | |
| | | /// <summary> |
| | | /// 生成新的主表ID,确保不重复 |
| | | /// 生成新的主表ID,通过数据库序列获取唯一ID |
| | | /// </summary> |
| | | private decimal GenerateNewId() |
| | | { |
| | | // 处理空表的情况,从1开始 |
| | | var maxId = Db.Queryable<MesRohIn>().Max(x => (decimal?)x.EbelnK3id) ?? 0; |
| | | var newId = maxId + 1; |
| | | |
| | | // 双重检查,确保生成的ID不存在 |
| | | while (Db.Queryable<MesRohIn>().Where(x => x.EbelnK3id == newId).Any()) |
| | | try |
| | | { |
| | | newId++; |
| | | } |
| | | // 替换为: |
| | | var sequenceValueObj = Db.Ado.GetScalar("SELECT NEXT VALUE FOR MES_ROH_IN_seq"); |
| | | var sequenceValue = Convert.ToDecimal(sequenceValueObj); |
| | | // 验证序列值是否有效 |
| | | if (sequenceValue <= 0) |
| | | { |
| | | throw new InvalidOperationException($"数据库序列 MES_ROH_IN_seq 返回了无效的值: {sequenceValue}"); |
| | | } |
| | | |
| | | return newId; |
| | | return sequenceValue; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | // 记录异常信息 |
| | | Console.WriteLine($"调用数据库序列 MES_ROH_IN_seq 失败: {ex.Message}"); |
| | | |
| | | // 向上层抛出明确的异常信息 |
| | | throw new InvalidOperationException($"生成子表ID失败,无法获取数据库序列值: {ex.Message}", ex); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |