问题描述及重现代码:
Expression<Func<SalesPersonOrderVo, bool>> expression = x => x.Status == SalesOrderStatusEnum.Complete;
var repository = freeSql.GetRepository<SalesPersonOrderVo>();
await repository.Select.Where(expression).ToListAsync();
SalesOrderStatusEnum.Complete有时编译后偶尔会识别为'Complete',不能转换为int,大多数情况下编译后是正常的,偶尔不正常变成'Complete'字符串;
导致发布后,员工添加数据有时不正常,查询不到数据,因为没有任何征兆;
一次本地调试后看打印出来的SQL,复制到Navicat运行才看清是枚举字符串问题,发现是枚举没正确转换成int,但查代码无异常;
未做任何改动,重新编译一次则正常,我找不到问题根源,已经发生多次,问deepseek,怀疑是缓存,但无法给出正确的处理方法。
fsql.Aop.ConfigEntityProperty += (s, e) =>
{
if (e.Property.PropertyType.IsEnum)
e.ModifyResult.MapType = typeof(int);
};
public class SalesPersonOrderVo
{
/// <summary>
/// 订单状态
/// </summary>
public SalesOrderStatusEnum Status { get; set; }
/// <summary>
/// 最终销售产品
/// </summary>
[JsonMap]
public IEnumerable<SalesOrderGoodsItemBo> 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
问题描述及重现代码:
SalesOrderStatusEnum.Complete有时编译后偶尔会识别为'Complete',不能转换为int,大多数情况下编译后是正常的,偶尔不正常变成'Complete'字符串;
导致发布后,员工添加数据有时不正常,查询不到数据,因为没有任何征兆;
一次本地调试后看打印出来的SQL,复制到Navicat运行才看清是枚举字符串问题,发现是枚举没正确转换成int,但查代码无异常;
未做任何改动,重新编译一次则正常,我找不到问题根源,已经发生多次,问deepseek,怀疑是缓存,但无法给出正确的处理方法。
数据库版本
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