sqlsugar配置查询bug 返回

SqlSugar
10 124

sqlserver数据库场景:

var model= await DbScoped.SugarScope.Queryable<Order>()

               .Select(s1 => new ViewOrder

               {

                   Id = s1.Id.SelectAll(),

                   OrderName = s1.OrderId.GetConfigValue<ViewDictionary>("Item_Order")

               })

               .FirstAsync();

说明:s1.OrderId类型为int   ViewDictionary字典表中value为string类型时    配置查询转换成sql查询就会报错


错误提示:

在将 varchar 值 'Submit' 转换成数据类型 int 时失败。

English Message : Entity mapping error.在将 varchar 值 'Submit' 转换成数据类型 int 时失败。

   at SqlSugar.Check.Exception(Boolean isException, String message, String[] args)


热忱回答10

  • OrderName  是string类型吗

    0 回复
  • AOP把SQL输出一下

    0 回复
  • ordername是string类型

    SELECT * FROM (SELECT *, (SELECT [Name] FROM [ViewDictionary] WHERE [Value]=[x].OrderId AND ( [Item] = @Item0_con_0 ) ) AS [OrderName ] ,ROW_NUMBER() OVER(ORDER BY [RealName] ASC) AS RowIndex  FROM [Order] x ) T WHERE RowIndex BETWEEN 1 AND 10   这个是分页查询  也是同样的问题


    0 回复
  • @fate sta

    ordername是string类型

    SELECT * FROM (SELECT *, (SELECT [Name] FROM [ViewDictionary] WHERE [Value]=[x].OrderId AND ( [Item] = @Item0_con_0 ) ) AS [OrderName ] ,ROW_NUMBER() OVER(ORDER BY [RealName] ASC) AS RowIndex  FROM [Order] x ) T WHERE RowIndex BETWEEN 1 AND 10   这个是分页查询  也是同样的问题


    0 回复
  • @fate sta:在数据库直接执行这个sql的时候  就会报错

    0 回复
  • [Value]=[x].OrderId  应该是这2个字段类型不一样

    0 回复
  • @fate sta:对  字典表是string类型   业务表是int类型的  难道只能修改数据库实体模型的字段类型吗     s1.OrderId.GetConfigValue<ViewDictionary>("Item_Order")  这里不能支持字段类型转换吗?

    0 回复
  • @小孩不哭:不建议转换这样会有性能问题,要么你用联表处理,手动转换

    0 回复
  • @fate sta:这样的话  就会出现多种风格的字典表转换方式   而且开发的时候使用配置查询 很容易忽视待转义的字段的类型(导致报错)   是否还有更优的处理方式呢   还麻烦大神考虑考虑,感谢!

    0 回复
  • @fate sta:这样的话  就会出现多种风格的字典表转换方式   而且开发的时候使用配置查询 很容易忽视待转义的字段的类型(导致报错)   是否还有更优的处理方式呢   还麻烦大神考虑考虑,感谢!

    0 回复