前言
FreeSql 目前版本号 0.5.5,预计明年元旦发布 1.0.0,切莫小看了版本号,目前单元测试方法1350+,并且每个方法内的涵盖面又比较广(不信的话见下图),每一次版本发布都作了较多的测试工作。
最近的一段时间,关注我们的人时不时会看见扩展包发布,今天振奋人心的功能主要是核心部分实现(扩展包今天当配角)。就不多啰嗦了,咱们直接入主题。
功能一:MapType 类型映射
使用 codefirst 时序列化 json 或 jsonb 数据类型报错
使用 postgresql + ef 配置数据映射关系,使用 FreeSql 的映射扩展时,对于json类型的数据映射出错。
这是来自 github 上的某个 issue,原因是用户的实体定义了 string,数据库类型为 json。FreeSql 本身支持了丰富的类型,不限于 json,但是限定了类型的映射,比如 JToken/JObject/JArray 的实体类型才可以映射至 PostgreSQL 数据库的 json 类型。另外虽然有 DbType 特性可以设置,但使用范围有限,不可跨越类型(如使用 string 可使用 DbType=“char(100)”)。
还有一些类似要求,如:将 enum 映射到数据库 varchar 的请求。。。。
到现在,我们已经彻底突破了这个障碍,基本可以做到随意映射类型。作为新项目开发,我们提供本身的默认类型映射已经非常人性化,提这些需求的人主要还是历史原因,咱们做程序维护工作的人员还是占比很高,千怪万怪只能怪 FreeSql 来得太迟。。。。
目前为 MapType 功能增加了大约 400 个单元测试方法。贴一段 demo 配置方法:
class EnumTestMap {
public Guid id {
get; set; }
[Column(MapType = typeof(string))]
public ToStringMapEnum enum_to_string {
get; set; }
[Column(MapType = typeof(string))]
public ToStringMapEnum? enumnullable_to_string {
get; set; }
[Column(MapType = typeof(int))]
public ToStringMapEnum enum_to_int {
get; set; }
[Column(MapType = typeof(int?))]
public ToStringMapEnum? enumnullable_to_int {
get; set; }
[Column(MapType