是否支持非主键的自增列? 返回

SqlSugar 沟通中
2 648
该叫什么 孙波 发布于2026/1/29
悬赏:0 飞吻
using SqlSugar;
using System.Diagnostics;
using xys.database.admin.Entites.Base;
 
namespace xys.database.admin.Entites
{
    /// <summary>
    /// 城市合伙人
    /// </summary>
    [SugarTable("city_partner_info")]
    [SugarIndex($"idx_{nameof(CityPartnerInfo)}_{nameof(OrgId)}", nameof(OrgId), OrderByType.Asc)]
    [SugarIndex($"idx_{nameof(CityPartnerInfo)}_{nameof(SerialNumber)}", nameof(SerialNumber), OrderByType.Desc,true)]
    
    public partial class CityPartnerInfo : BaseField
    {
        /// <summary>
        /// 入驻序号自增
        /// </summary>
        [SugarColumn(ColumnName = "serial_number", ColumnDescription = "序号", IsIdentity = true)]
        public int SerialNumber { get; set; }
         
        /// <summary>
        /// 组织id
        /// </summary>
        [SugarColumn(ColumnName = "org_id", ColumnDescription = "组织 id")]
        public long OrgId { get; set; }
         
        /// <summary>
        /// 组织名称
        /// </summary>
        [SugarColumn(ColumnName = "org_name", ColumnDescription = "组织名称", Length = 500, IsNullable = false)]
        public string? OrgName { get; set; }
    }
}

以上代码,主键为基类种的Id字段,用的是雪花id。 需求是需要记录入驻顺序所以考虑到用mysql数据库的自增列来做,但是生成表的时候会报错:

Unhandled exception. SqlSugar.SqlSugarException: Incorrect table definition; there can be only one auto column and it must be defined as a key
   at SqlSugar.CodeFirstProvider.GetDifferenceTables(TableDifferenceProvider result, Type type)
   at SqlSugar.CodeFirstProvider.GetDifferenceTables(Type[] types)
...


热忱回答(2)

  • 主键是雪花ID就是按顺序存储的。不需要在用自增

    0 回复
  • 孙波 孙波 VIP0
    2026/2/5

    @fate sta:我知道雪花是自增的,但是需求是记录入驻顺序,比如 “组织A” 是第332个入驻的  332这个数字无法在雪花ID上体现的, 入驻顺序还需要成为编号字段中的一部分。


    0 回复