pgsql InitTable 报错:Parameter count mismatch 返回

SqlSugar 沟通中
7 337
该叫什么 1024 发布于2024/7/26
悬赏:0 飞吻

下载源码调试发现是这个地方报错

image.png

新增了一个字段 action,是枚举类型,默认值为0

----------------------------

专门写了一个测试代码试了,没有发现问题

热忱回答7

  • 1024 1024 VIP0
    2024/7/26

    定位到报错位置:

    image.png

    0 回复
  • 1024 1024 VIP0
    2024/7/26

    报错语句:columnInfo.PropertyInfo.GetValue(item, null)

    0 回复
  • 1024 1024 VIP0
    2024/7/26

    取消掉:Aop.DataChangesExecuted 的注册,就不会出现异常

    删除掉字段上的 DefalutValue 也不会出现异常

    0 回复
  • fate sta fate sta VIP0
    2024/7/26

    https://www.donet5.com/Home/Doc?typeId=2366

    按模版提供可以重现的DEMO

    0 回复
  • 1024 1024 VIP0
    2024/7/26

    试过了,没有重现,应该是某个特殊地方设置导致的,暂时没找到

    0 回复
  • fate sta fate sta VIP0
    2024/7/26

    @1024:那就做好日志,是什么实体什么样参数出的问题

    0 回复
  • 1024 1024 VIP0
    2024/7/26
    [SugarTable("Special", TableDescription = "专题", IsDisabledDelete = true)]
    public class Special 
    {
        /// <summary>
        /// 非自增ID
        /// </summary>
        [SugarColumn(ColumnDescription = "ID", IsPrimaryKey = true)]
        public long Id { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        [SugarColumn(ColumnDescription = "名称",DefaultValue ="1")]
        public string Name { get; set; }
    
    
        [SugarColumn(ColumnDescription ="类型",DefaultValue ="0")]
        public AbcType Type { get; set; }
    
    }
    
    
    public enum AbcType
    {
        测试=0
    }

    这个是我测试的实体

    var _db = new SqlSugarScope(new ConnectionConfig()
    {
        DbType = SqlSugar.DbType.PostgreSQL,
        ConnectionString = "HOST=127.0.0.1;PORT=5432;DATABASE=test;Username=test;PASSWORD=123456;",
        IsAutoCloseConnection = false,
        MoreSettings = new ConnMoreSettings
        {
            IsAutoDeleteQueryFilter = true,//启用删除查询过滤器  
            IsAutoUpdateQueryFilter = true//启用更新查询过滤器 (表达式更新,如果是实体方式更新建议先查询在更新)
        }
    }, db =>
    {
        //单例参数配置,所有上下文生效
        db.Aop.OnLogExecuting = (sql, pars) =>
        {
            //获取IOC对象不要求在一个上下文
            //vra log=s.GetService<Log>()
    
            //获取IOC对象要求在一个上下文
            //var appServive = s.GetService<IHttpContextAccessor>();
            //var log= appServive?.HttpContext?.RequestServices.GetService<Log>();
    
            var sqlStr = UtilMethods.GetSqlString(DbType.SqlServer, sql, pars);
    
            Console.WriteLine($"SQL:{sqlStr}");
        };
        db.Aop.DataExecuting = (oldValue, entityInfo) => { };
        db.Aop.DataChangesExecuted = (oldValue, entityInfo) => { };
    });
    
    _db.CodeFirst.InitTables(typeof(Special));//创建表
    var entityType = typeof(Special);
    
    Console.WriteLine("111222333");

    这个是测试代码



    这个代码测试没发现问题

    -----------------------------------

    我已经把问题相关信息提交,也已经换用另外方式,不用DataChangesExecuted,现在已经没有问题了,错误很简单:Parameter count mismatch,就是在调用aop的时候,数据不对导致,至于是哪儿不对我没发现,已经尽力。


    0 回复