如果是多表查询用到ViewModel 那么也需要 IsJson特性
就算你的数据库不支持Json类型,sqlsugar也可以让你支持JSON
public class UnitJsonTest { [SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)] public int Id { get; set; } [SqlSugar.SugarColumn( IsJson = true)]//必填 public Order Order { get; set; }//可以是数组或者JArray JObject public string Name{get;set;} } Db.Insertable(new UnitJsonTest() { Name="json1",Order = new Order { Id = 1, Name = "order1" } }).ExecuteCommand(); var list = Db.Queryable<UnitJsonTest>().ToList();
我们可以实体用JObject和JArray实现动态类型,当然其他字典什么的只要能序列化的都支持
[SqlSugar.SugarColumn(IsJson = true)] public JObject Order { get; set; } JObject o= JObject.FromObject(new { id = 1 }); JArray o2 = JArray.FromObject(new List<object> { new { id=1} }); //只要能序列化的都支持,并不是只支持这2种
新功能:
5.1.4.68 版本支持了System.Text.Json里面的对象
支持JObject JArray ,实体 ,集合等类型
[SugarColumn(IsJson=true)]//添加特性 public List<Order> JsonObj{get;set;}
函数名 | 说明 | 兼容 |
SqlFunc.JsonLike | 模糊查询,兼容所有库,性能一般适合小数据处理 SqlFunc.JsonLike(it.JsonObj,"a") 等于Like '%a%' | 支持所有数据库 |
SqlFunc.JsonField | 注意:大小写要一样 (1)查询Id的值{id:1} SqlFunc.JsonField(it.JsonObj,"id") //返回1 (2)多层级查询,查询id 的值 {obj:{id:"a"}} SqlFunc.JsonField(it.JsonObj,"obj","id") //返回a | 如果不支持请升级 支持 PostgreSQL 支持 SqlServer2017+ 支持 MySql (只能字段) 支持 Oracle (只能字段) Sqlite升级到:5.1.4.148 支持 Sqlite |
SqlFunc.JsonIndex 需要升级到:5.1.4.113+ | 获取json数组的索引对象 SqlFunc.JsonIndex(it.JsonArray,0) 如果是['a','c'] 那么返回a | PostgreSQL MySql SqlServer2017 |
SqlFunc.JsonParse | 转成JSON类型 | 支持PostgreSQL |
SqlFunc.JsonContainsFieldName | 第一层是否存在id (如果多层级需要结合JsonField) SqlFunc.JsonField("{id:1}","id")//true | 支持PostgreSQL |
SqlFunc.JsonArrayAny(it.Json, "a") 需要升级到:5.1.3.36+ | ["a","b","c"] 这种数组里面是否存在字符串 a 注意:如果是数字可以 1或者"1" 都试一下 也就是 [1,2] 参数用int类型 也就是 ["1","2"] 参数用string类型 注意:如果是多个值可以结合【动态表达式】 | 支持PostgreSQL 支持MySql 支持SqlServer(最新版本) |
SqlFunc.JsonListObjectAny(it.json, "Name", "a") 需要升级到:5.1.3.36+ | [{"name":"a"},{"name":"b"}] 集合中是否存在 name=a的一项 注意:如果是数字可以 1或者"1" 2种类型参数都试一下 注意:如果是多个值可以结合【动态表达式】 | 支持PostgreSQL 支持MySql 支持SqlServer(最新版本) |
SqlFunc.JsonArrayLength(it.Json) | [1,2,3] 获取数组长度 | 支持PostgreSQ SqlSugar 5.1.4.115 支持MySql 支持 SqlServer |
例如保存用户的一些附带信息,这个时候不需要额外建表
2016 © donet5.comApache Licence 2.0