5.0.0.19 更新内容收集 返回

SqlSugar 老数据
33 2704

请大家把想更新的功能写在这个连接下面 

热忱回答33

  • 1、需要BUG 有重现步骤

    2、如果是新需求,要非常明确

    0 回复
  • 老九 老九 VIP0
    2020/10/11

    希望能够通过硬编码的方式进行数据库创建,  当前索引名称和类型无法, 期待作者能够考虑增加.

    0 回复
  • @老九:你能写出你的设计代码吗 假设一下这个功能你去用什么C#写出来

    0 回复
  • var test = db.Queryable<Utb_Sys_User ,Utb_Sys_User>

    ((st, sc) => st.UserId == sc.CreateUserId)

    .Select((st, sc)=>new { st, sc }).ToList();


    同一个表关联查询,都返回时报错,

    System.ArgumentException:“已添加了具有相同键的项。”

    0 回复
  • @??⊙⊙小噤╳∩_∩??:好的这个问题已经收到

    0 回复
  • PGSQL  WHERE TRUE

    0 回复
  • 当主键列名为 Index 时, Mapper一对一查询报错,错误提示:

    'Index' 附近有语法错误。如果它要作为表提示的一部分,则必须有 WITH 关键字和圆括号。

    0 回复
  • @万千情丝:好的

    0 回复
  • 1111111 1111111 VIP0
    2020/10/12

    在PGSQL中Json类型建表,Insert没问题,Update会报错

    "Message": "42804: 字段 \"testjson\" 的类型为 json, 但表达式的类型为 text",

    在实体里是这么写的:

    [SugarColumn(IsJson = true, ColumnDataType = "json", ColumnDescription = "测试json", IsNullable = true)]
            public List<string> testjson{ set; get; }

    Update语句:

    _db.Updateable(entity).ExecuteCommandHasChangeAsync();


    0 回复
  •  string cs = "Data Source=:memory:";

                cs = @"Data Source=D:\Tmp\Sqlite\SqliteTest002.db3";


                using (var con = new System.Data.SQLite.SQLiteConnection(cs))

                {

                    con.Open();



                    Parallel.For(0, 1000 * 1000, new ParallelOptions() { MaxDegreeOfParallelism = 5000 }, (i, loopState) =>

                    {  

                        var userItem = con.Get<UserItem>(1);

                        if (userItem == null)

                        {

                        }

                        else

                        {

                            if (userItem.Id != 1)

                            { 

                            }

                        } 

                    }); 

                }

    Sqlite

    0 回复
  • @1111111:这边我会验证的,关注下这个贴子

    0 回复
  • 1111111 1111111 VIP0
    2020/10/12

    @fate stay night

    经测试 对于PGSQL数据库Json类型Update操作 SetColumns 和 UpdateColumns 都不好使

    实体定义(只展示Json格式字段):

            [SugarColumn(IsJson = true, ColumnDataType = "json", ColumnDescription = "图片链接", IsNullable = true)]
            public List<string> ImgUrl { set; get; }
            [SugarColumn(IsJson = true, ColumnDataType = "json", ColumnDescription = "附件", IsNullable = true)]
            public List<string> Attachment { set; get; }
            ......

    1,SetColumns方式:(根据表达式更新)

    public async Task<bool> Update( Expression<Func<TEntity, TEntity>> insertColumns = null,string strWhere=null)
            {
                IUpdateable<TEntity> up = _db.Updateable<TEntity>();
                if (insertColumns != null )
                {
                    up = up.SetColumns(insertColumns);
                }
    
                if (!string.IsNullOrEmpty(strWhere))
                {
                    up = up.Where(strWhere);
                }
                return await up.ExecuteCommandHasChangeAsync();
            }

    更新操作:

    Update(item=>new BrandModalInfo(){ImgUrl = model.ImgUrl,Attachment = model.Attachment},"id="+model.Id);

    报错信息:

    "English Message : UpdateColumns no support IsJson\r\nChinese Message : SetColumns方式更新不支持IsJson,你可以使用db.Updateable(实体)的方式更新",

    2.UpdateColumns 方式:(根据实体更新)

    public async Task<bool> Update(
              TEntity entity,
              List<string> lstColumns = null,
              List<string> lstIgnoreColumns = null,
              string strWhere = ""
                )
            {
                IUpdateable<TEntity> up = _db.Updateable(entity);
                if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
                {
                    up = up.IgnoreColumns(lstIgnoreColumns.ToArray());
                }
                if (lstColumns != null && lstColumns.Count > 0)
                {
                    up = up.UpdateColumns(lstColumns.ToArray());
                }
                if (!string.IsNullOrEmpty(strWhere))
                {
                    up = up.Where(strWhere);
                }
                return await up.ExecuteCommandHasChangeAsync();
            }

    更新操作:

    Update(model, new List<string>() { "imgurl", "attachment" }, null,  "id = " + model.Id);

    报错信息:

    字段 \"imgurl\" 的类型为 json, 但表达式的类型为 text",


    0 回复
  • @1111111:近期发布

    0 回复
  • Mr、谢 Mr、谢 VIP0
    2020/10/12

    pgsql

    主键数据类型定义为long。主键作为数据条件时报错:42883: operator does not exist: boolean = integer

    0 回复
  • Mr、谢 Mr、谢 VIP0
    2020/10/12

    pgsql

    主键数据类型定义为long。主键作为查询条件时报错:42883: operator does not exist: boolean = integer


    0 回复
  • Mr、谢 Mr、谢 VIP0
    2020/10/12

    @Mr、谢:还有Guid,也是一样的错误,请问怎么处理?

    0 回复
  • @Mr、谢:c#代码是什么样子

    0 回复
  • Mr、谢 Mr、谢 VIP0
    2020/10/13

    @fate stay nightimage.png

    0 回复
  • Mr、谢 Mr、谢 VIP0
    2020/10/13

    @fate stay nightimage.png

    0 回复
  • @Mr、谢:这个错应该是status==true就好了 ,目前pgsql已经有人提过了

    0 回复
  • Mr、谢 Mr、谢 VIP0
    2020/10/13

    确实是这个问题,谢谢

    0 回复
  • Mr、谢 Mr、谢 VIP0
    2020/10/13

    @fate stay night:确实是这个问题,谢谢

    0 回复
  • 创建数据库的时候可以支持 设置字符集吗


    0 回复
  • @「繁华」:这个需求记下来了

    0 回复
  • LYL LYL VIP0
    2020/10/13

    1.场景:表格一个学生显示所有职务,并且可以模糊搜索职务。
       需求:子查询 查询函数可以添加行转列吗? 
    2.根据条件查询个数,case when else的时候 只能返回0不能返回null,这样查询个数就会数据错误。
    3.希望添加子查询的朗姆达拼接
      

    0 回复
  • @LYL: 好的 这些需求记下来了,


    第二2如何报错的,可以提供一下代码

    0 回复
  • LYL LYL VIP0
    2020/10/14

    第二个 
    比如订单系统
    我要查询子订单状态为open,close等等一堆状态的父订单数量

    Db.Queryable<OrderHeader,OrderItem>((h,i)=>new object[]{
        JoinType.Left,h.Id=i.headerId
    }).Select((h,i)=>new{
        OpenCount= SqlFunc.AggregateDistinctCount(SqlFunc.IIF(i.status=="Open"&&i.StatusNumber>3,h.Id,0),
        CloseCount= SqlFunc.AggregateDistinctCount(SqlFunc.IIF(i.status=="Close"&&i.StatusNumber<=3,h.Id,0),
    }

    这里 IIF的else 写null会报无法将null转换为int
    但如果是0的话,数据 opencount和closecount就会多一条,数据就会对不上。

    也不能简单的-1 因为有可能都满足open的情况。

    如果要用SqlFunc.IF来写 最后的End 也必须写对应的类型。

    0 回复
  • @LYL:你试试将实体改成int?类型 

    0 回复
  • LYL LYL VIP0
    2020/10/14

    @fate stay night:试过 最终的的sql 也会被当成0处理

    0 回复
  • 当前贴子已关闭有问题到 http://www.donet5.com/Ask/9/11069  5.0.0.20发贴 

    0 回复
  • @LYL:你的需求会在后面版本进行处理

    0 回复
  • @??⊙⊙小噤╳∩_∩??:这个延迟到下个版本了

    0 回复
  • @1111111:setcolums暂时还是没有支持,不过update(实体) 这种支持了

    0 回复