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

ASP.NET项目中如何生成ART-XXXX/YYYY格式的动态产品编码

修改ASP.NET产品编码生成逻辑为ART-XXXX/YYYY格式

你的需求是将现有001/2023格式的产品编码调整为ART-001/2023,只需对编码生成逻辑做核心修改,同时补充异常处理避免格式错误导致的问题:

修改后的编码生成逻辑

var currentYear = DateTime.Now.Year;
// 初始编码改为ART-前缀格式
var productCode = $"ART-001/{currentYear}";

var latestProduct = await context.products.OrderByDescending(f => f.Id)
                                          .FirstOrDefaultAsync();

if (latestProduct != null && latestProduct.ProductCode.Contains(currentYear.ToString()))
{
    try
    {
        // 拆分编码前缀部分,移除ART-后提取数字
        var codePrefix = latestProduct.ProductCode.Split("/")[0];
        var numberPart = codePrefix.Replace("ART-", string.Empty);
        var currentProduct = int.Parse(numberPart) + 1;
        // 拼接符合新格式的编码
        productCode = $"ART-{currentProduct:0000}/{currentYear}";
    }
    catch (FormatException ex)
    {
        // 处理编码格式异常,可根据业务需求调整逻辑
        throw new InvalidOperationException("现有产品编码格式不正确,无法生成新编码", ex);
    }
}

关键修改说明

  1. 初始编码调整:直接将默认编码从001/{currentYear}改为ART-001/{currentYear},确保第一个产品的编码符合新格式
  2. 编码解析逻辑优化:
    • 先通过Split("/")获取编码的前缀部分(如ART-0001)
    • 移除ART-前缀提取纯数字,转成整数后自增
    • 重新拼接回ART-前缀、补零数字和年份
  3. 异常处理:增加try-catch捕获格式转换异常,避免数据库中存在不符合格式的编码导致程序崩溃

额外优化建议

  • 排序逻辑优化:如果Id递增顺序和产品编码生成顺序不完全一致,建议改为按ProductCode降序排序,确保取到最新的有效编码
  • 封装独立方法:将编码生成逻辑封装为单独的服务方法(如GenerateNextProductCodeAsync()),便于复用和单元测试
  • 数据验证:在Article类的ProductCode属性上添加注解,确保存入数据库的编码格式合规:
    [RegularExpression(@"^ART-\d{4}/\d{4}$", ErrorMessage = "产品编码格式必须为ART-XXXX/YYYY")]
    public string ProductCode { get; set; }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:07:19