dotnetcore / dotnetcore/FreeSql

枚举有时不能正确转换成int

Open
#2,235 9 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
4.4k
Forks
910
PR merge metrics
No merged PRs in 30d

Description

#### 问题描述及重现代码:
```c#
Expression> expression = x => x.Status == SalesOrderStatusEnum.Complete;
var repository = freeSql.GetRepository();
await repository.Select.Where(expression).ToListAsync();
```

SalesOrderStatusEnum.Complete有时编译后偶尔会识别为'Complete',不能转换为int,大多数情况下编译后是正常的,偶尔不正常变成'Complete'字符串;
导致发布后,员工添加数据有时不正常,查询不到数据,因为没有任何征兆;
一次本地调试后看打印出来的SQL,复制到Navicat运行才看清是枚举字符串问题,发现是枚举没正确转换成int,但查代码无异常;
未做任何改动,重新编译一次则正常,我找不到问题根源,已经发生多次,问deepseek,怀疑是缓存,但无法给出正确的处理方法。

```c#
fsql.Aop.ConfigEntityProperty += (s, e) =>
{
if (e.Property.PropertyType.IsEnum)
e.ModifyResult.MapType = typeof(int);
};
```

```c#
public class SalesPersonOrderVo
{
///
/// 订单状态
///
public SalesOrderStatusEnum Status { get; set; }
///
/// 最终销售产品
///
[JsonMap]
public IEnumerable SalesProducts { get; set; }
}
```

#### 数据库版本
Mysql 8.4.8

#### 安装的Nuget包
FreeSql 3.5.309
FreeSql.Extensions.JsonMap 3.5.309
FreeSql.Provider.MySqlConnector 3.5.309
FreeSql.Repository 3.5.309
IdleBus 1.5.3
MySqlConnector 2.5.0

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

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.