如何逐个InitTables分区历史表 返回

SqlSugar 沟通中
3 143

大神,我碰到如下需求,请指点


数据库: SQLServer2019 标准版


当业务发生变化的时候,历史表增加了一个字段,如果部增加,直接插入历史数据就会报错。我写了一个工具,首先工具初始化表,希望能够逐个去初始化历史表,不用原有的函数,是因为数据多了并且开启事务,导致不可用。

函数如下,


                var tableName = dt.TableName; // 获得具体某个历史表表名

                try
                {
                    db.CodeFirst.InitTables() ?? //但是这里不知道该如何写了?
                }


        public void InitPTableOneByOne(SqlSugarScope db, Type type)
        {
            WriteMessage($"Init PTable {type.Name} ...");

            var tables = db.SplitHelper(type).GetTables();

            if (tables == null || !tables.Any())
            {
                return;
            }

            
            for (var i=0; i < tables.Count; i++)
            {
                string msg;    
                var dt = tables[tables.Count - 1];
                var tableName = dt.TableName; // 获得具体某个历史表表名

                try
                {
                    db.CodeFirst.InitTables() ?? //但是这里不知道该如何写了?
                }
                catch(Exception ex)
                {
                    msg = ex.Message;
                }

                if (!string.IsNullOrWhiteSpace(msg))
                {
                    WriteMessage(msg);
                }
            }


        }



热忱回答3

  • fate sta fate sta VIP0
    1个月前

           db.CodeFirst.As<T>(表名).InitTables<T>() ;

    0 回复
  • joyswing joyswing VIP0
    1个月前

    请问这里的T是分区表的Model,还是不需要使用分区表标志

    0 回复
  • fate sta fate sta VIP0
    1个月前

    codefirst只支持分表,不支持分区

    0 回复