dotnetcore / dotnetcore/FreeSql
【BUG】JsonMap 新老版本部分特性不兼容
- Dominant language
- C#
- Stars
- 4.4k
- Forks
- 910
- PR merge metrics
- No merged PRs in 30d
Description
#### 问题描述及重现代码:
版本升级后,之前运行完好的JsonMap自动映射功能报错
FreeSql 3.2.833 升级到 3.5.308
FreeSql.Extensions.JsonMap 3.2.833 升级到 3.5.308
经过对比测试,发现问题出现在 Expression> select 参数上,如果不传这个字段选择参数,则不会报错,如果传递了这个参数则抛出类型转换异常。(之前3.2.833版本没有这个问题)
// 成功
var successQuery = await freeSql.Select().Where(t=>t._id == id).FirstAsync();
// 失败
var exceptionQuery = await freeSql.Select().Where(t => t._id == id).FirstAsync(t=>new MetaForm { Properties = t.Properties});
// 成功
var successQuery1 = await freeSql.Select().Where(t => t._id == id).FirstAsync(t=>new MetaForm { _id= t._id});
只要选择属性涉及到JsonMap标记的字段,就会抛出转换异常,似乎是新版本的改动没有兼容到选择属性这里。
```c#
// c# code
模型定义(使用JsonMap自动映射数据库字符串类型字段到强类型属性):
class MetaForm{
...
///
/// 自定义属性
///
[JsonMap]
[Column(MapType = typeof(string), StringLength = -1)]
public MetaFormProperties Properties { get; set; } = new();
}
public class MetaFormProperties
{
public string XX { get; set; }
//...
}
添加自定义类型注册:
FreeSql.Internal.Utils.TypeHandlers.TryAdd(typeof(MetaFormProperties), new TypeJsonHandler());
```
#### 数据库版本
Postgresql 17.5
#### 安装的Nuget包
FreeSql 3.2.833 升级到 3.5.308
FreeSql.Extensions.JsonMap 3.2.833 升级到 3.5.308
#### .net framework/. net core? 及具体版本
net10.0
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.