FreeSql icon indicating copy to clipboard operation
FreeSql copied to clipboard

在SqlServer数据的查询条件中使用枚举型.ToString会被解析成cast(x as nvarchar)

Open cejpo001 opened this issue 3 years ago • 3 comments

问题描述及重现步骤:

在where条件查询中,使用枚举.tostring(),比如 OrderTab.where(t=>t.Code = OrderType.No.ToString()).ToList();此方式会被解析为 “WHERE (a.[Code] = cast(5 as nvarchar(100)))” 预期结果是想要“WHERE (a.[Code] = ‘No’)”

数据库的具体版本

Sql Server 2008R2
``

#### 安装的包

Freesql 3.2.669.0 FreeSql.Provider.SqlServer 3.2.669.0


#### .net framework/. net core? 及具体版本

.net framework 4.6.1

cejpo001 avatar Sep 20 '22 03:09 cejpo001

现在我的临时解决办法是 var typeNo=OrderType.No.ToString(); OrderTab.where(t=>t.Code = typeNo).ToList(); 但每个条件中就要创建一个变量。。。

cejpo001 avatar Sep 20 '22 03:09 cejpo001

.Where(a => object.Equals(a.Code, OrderType.No))

2881099 avatar Sep 20 '22 04:09 2881099

这个可以,谢谢。啥时候可以t.Code.Equals(OrderType.No)
:)

cejpo001 avatar Sep 20 '22 06:09 cejpo001