Sql语句生成问题 返回

SqlSugar 沟通中
7 522

项目升级至 .NET 10 在 where 的 表达式中使用 contains 生成的 sql 语句不正确

环境:.NET 10    MySql 8.4

如下图所示生成的sql语句是    SELECT `id` FROM `student`  WHERE  (1,2,3 like concat('%',`id`,'%'))

而不是    SELECT `id` FROM `student`  WHERE  (`id` in (1,2,3))

执行该语句 mysql 报错 Operand should contain 1 column(s)

但是将 int?[] 类型改为 int[] 类型 可以生成正确的 sql 语句

在    .NET 8    .NET9 上 , int?[]类型  和 int[] 类型都可以生成正确的语句


项目中有大量的 int?[] 这种类型的数组,将代码中所有 int?[] 全部改写过于繁琐

请问这是否属于bug,如果能修复,希望下个版本能修复

image.png

热忱回答7

  • fate sta fate sta VIP0
    2025/11/14

    好的。我处理一下。

    0 回复
  • fate sta fate sta VIP0
    2025/11/15
    int[]? ids = new int[]  { 1, 2 };
    SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
    {
        ConnectionString = "datasource=demo.db",
        DbType = DbType.Sqlite,
        IsAutoCloseConnection = true
    });
    Db.Aop.OnLogExecuting = (s, y) =>
    {
        Console.WriteLine(s);
    };
    
    Db.CodeFirst.InitTables<Class1>();
    try
    {
    	var list=Db.Queryable<Class1>().Where(i => ids.Contains(i.Id)).ToList();
    }
    catch (Exception ex)
    {
    
    	throw;
    }
    public class Class1 
    { 
      public int Id { get; set; }
    }

    我用DEMO没重现你的问题。你的VS补丁是最新的吗。

    0 回复
  • fate sta fate sta VIP0
    2025/11/15

    image.png

    0 回复
  • cfyuiorw cfyuiorw VIP0
    2025/11/17

    @fate sta

    你写的是 int[]?,我测试了也没问题。

    有问题的是int?[],就是有一个数组,里面的类型是 int 的可空类型 int?


    0 回复
  • N N VIP0
    2025/11/17

    image.png逗逼微软没有做方法重载而是偷懒

    image.png


    0 回复
  • fate sta fate sta VIP0
    2025/11/17

    我处理一下。

    0 回复
  • fate sta fate sta VIP0
    2025/11/17

    升级到最新版本208已修复

    0 回复