使用分表功能,2025新表没有自动创建 返回

SqlSugar 处理完成
4 499

实体:

[SplitTable(SplitType.Year)]
[SugarTable("mq_ConsumerLogs_{year}{month}{day}")]
[SugarIndex("idx1", nameof(CreatedAt), OrderByType.Asc)]
public class MQConsumerLogs
{
    /// <summary>
    /// 主键
    /// </summary>
    [SugarColumn(IsPrimaryKey = true)]
    public long Id { get; set; }
    /// <summary>
    /// 时间戳
    /// </summary>
    [SplitField]
    [SugarColumn(InsertServerTime = true, IsNullable = true)]
    public DateTime CreatedAt { get; set; }
}

数据库中已存在的数据表如下:

mq_ConsumerLogs_20240101


//当执行下面的代码,并不会自动创建2025年份的表,请问如果不使用insert方式自动创建表,还有其他方式吗?
this._dbClient.CodeFirst.SplitTables().InitTables<MQConsumerLogs>();


热忱回答4

  • 0 回复
  • 插入才会建表,这个是同步表和初始化一张表

    0 回复
  • @fate sta:有其他方式可以解决吗?我想实现这种需要

    0 回复
  • Shawn Shawn VIP0
    2025/1/3

    我也发生相同问题,部分分表插入会发生找不到栏位 sugarIndex 之类的错误,

    但部分有成功自动建立分表

    发生在有建立复合键(多个 primary key 栏位) 的 table 几乎都没有自动建立新年度分表, 如下是其中一个,

    类似错误讯息,发生过多次了,想请问是不是有哪些建表时需要注意没注意到的??


    执行 insert 就报错,找不到 栏位名称 sugarIndex 的错误, 分表也没产生成功, 手动建表之后才能正常运作

    await _client.AsTenant().BeginTranAsync();

    await _client.Insertable<Menu>(menu).SplitTable().ExecuteCommandAsync();

    ......

    await _client.AsTenant().CommitTranAsync();




    [SplitTable(SplitType.Year)]

    [SugarTable("MENU_{year}{month}{day}")]

    [SugarIndex("IX_MENU_ID", "ID",  OrderByType.Asc)]

    [SugarIndex("IX_MENU_SequenceID", "SequenceID", OrderByType.Asc)]

    public class Menu : BaseTable

    {

        /// <summary>

        /// 菜单内部编号

        /// </summary>

        public long ID { get; set; }

        /// <summary>

        /// 菜单外部编号

        /// </summary>

        [SugarColumn(Length = 20)]

        public string SequenceID { get; set; }

        /// <summary>

        /// 单位编号

        /// </summary>

        [SugarColumn(IsPrimaryKey = true)]

        public long OrganizationID { get; set; }

        /// <summary>

        /// 单位名称

        /// </summary>

        public string OrganizationName { get; set; }

        /// <summary>

        /// 菜单的年份

        /// </summary>

        [SugarColumn(IsPrimaryKey = true)]

        public int Year { get; set; }

        /// <summary>

        /// 菜单的月份

        /// </summary>

        [SugarColumn(IsPrimaryKey = true)]

        public int Month { get; set; }

        /// <summary>

        /// 菜单顺序号

        /// </summary>

        [SugarColumn(IsPrimaryKey = true)]

        public int Sequence { get; set; }

        /// <summary>

        /// 菜单名称

        /// </summary>

        [SugarColumn(Length = 60)]

        public string Name { get; set; }

        /// <summary>

        /// 菜单类型编号

        /// </summary>

        public long FoodSupplyTypeID { get; set; }

        /// <summary>

        /// 菜单类型名称

        /// </summary>

        public string FoodSupplyTypeName { get; set; }

        /// <summary>

        /// 是否是素食菜单

        /// </summary>

        public bool IsVegetarianFood { get; set; }

        /// <summary>

        /// 备注

        /// </summary>

        [SugarColumn(Length = 300,IsNullable = true)]

        public string Remark { get; set; }

    }


    0 回复