快乐的昕的电脑
22 小时以前 0c999fbeed306e212e30baabf90792afa52412dc
MES.Service/service/BasicData/MesRohInManager.cs
@@ -439,22 +439,50 @@
        }).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>