shuxinqin / Chloe

A lightweight and high-performance Object/Relational Mapping(ORM) library for .NET --C#
https://github.com/shuxinqin/Chloe/wiki
MIT License
1.52k stars 457 forks source link

sql中CAST()类型转换,索引失效 #331

Open 253696936 opened 2 years ago

253696936 commented 2 years ago

MySQL数据库 SysStatus字段类型为smallint 生成的sql语句使用了CAST类型转化,索引失效 SELECT ExcelSheet.ID AS ID,ExcelSheet.Name AS Name FROM ExcelSheet AS ExcelSheet WHERE (ExcelSheet.UserID = ?P_0 AND CAST(ExcelSheet.SysStatus AS SIGNED) = 1 AND ExcelSheet.ID IN (3)) 请问是基于什么原因要进行类型转化?

shuxinqin commented 2 years ago

C#在包含int16类型得表达式树中好像有点特别(会把int16用一个Type 为 Convert 的 UnaryExpression包裹起来),暂时没好解决方案,如果可以用int代替先吧~

kygl commented 1 year ago

其实,一些数值类型的字段不进行转换就好了。一般使用时,实体已声名好类型,使用时也不会出错。