Closed yus1977 closed 2 years ago
不是所有数据库都支持 json,建议可以直接定义成 string,或者定义成 json 对应的 DTO,然后使用 JsonMap 功能,这样数据库里统一是 text,但是会 CRUD 时会自动的序列化与反序列化。
如果数据库里统一是 text,实体上是通用了, 但不知是否还能使用数据库的JSON特性了,这个需要验证一下 比如: 1、使用JSON的属性作索引(MYSQL、SQLSever、PostgreSQL都支持), 2、JSON数组索引(mysql支持,PostgreSQL没有验证过) 3、使用sql从JSON 文本里提取数据,
所谓数据库特性,一般指查询,可以用自定义函数解析式解决。
可以先看下 CodeFirst 中的自定义特性一节,自己适配一个支持为不同数据库指定 DbType 的特性来用。
CodeFirst可以试试看 目前是DBFirst方式为主,实体都是生成工具生成的,生成工具是这样映射的 我先改一下模板试试看
attribute aop fluentapi 可以设置优先级
请看实体特性文档
Feature 特性
简要描述原因
JSON类型不同数据库映射到实体的类型能不能统一
使用场景
不同数据库定义的JSON类型,映射成实体代码后的数据类型不统一 MySQL,SQLServer都统一映射成了 string类型 PostgreSQL映射了 JToken 类型 这导致同一个代码,切换支持的数据库后,可能不能继续使用,必须 进行修改 如果统一都映射成一个数据类型,这样切换数据库类型后,业务代码也可以平滑切换