mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-10-15 18:55:07 +08:00
SqlServer SqlFunc.JsonField
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using SqlSugar;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@@ -16,6 +17,7 @@ namespace OrmTest
|
|||||||
Db.DbMaintenance.TruncateTable<UnitJsonTest>();
|
Db.DbMaintenance.TruncateTable<UnitJsonTest>();
|
||||||
Db.Insertable(new UnitJsonTest() { Order = new Order { Id = 1, Name = "order1" } }).ExecuteCommand();
|
Db.Insertable(new UnitJsonTest() { Order = new Order { Id = 1, Name = "order1" } }).ExecuteCommand();
|
||||||
var list = Db.Queryable<UnitJsonTest>().ToList();
|
var list = Db.Queryable<UnitJsonTest>().ToList();
|
||||||
|
var json = Db.Queryable<UnitJsonTest>().Select(it => SqlFunc.JsonField(it.Order, "Name")).ToList();
|
||||||
UValidate.Check("order1", list.First().Order.Name, "Json");
|
UValidate.Check("order1", list.First().Order.Name, "Json");
|
||||||
Db.Updateable(new UnitJsonTest() { Id = 1, Order = new Order { Id = 2, Name = "order2" } }).ExecuteCommand();
|
Db.Updateable(new UnitJsonTest() { Id = 1, Order = new Order { Id = 2, Name = "order2" } }).ExecuteCommand();
|
||||||
list = Db.Queryable<UnitJsonTest>().ToList();
|
list = Db.Queryable<UnitJsonTest>().ToList();
|
||||||
|
@@ -54,5 +54,36 @@ namespace SqlSugar
|
|||||||
return string.Format("( {0}<>'' AND {0} IS NOT NULL )", parameter.MemberName);
|
return string.Format("( {0}<>'' AND {0} IS NOT NULL )", parameter.MemberName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override string JsonField(MethodCallExpressionModel model)
|
||||||
|
{
|
||||||
|
var parameter = model.Args[0];
|
||||||
|
var parameter1 = model.Args[1];
|
||||||
|
//var parameter2 = model.Args[2];
|
||||||
|
//var parameter3= model.Args[3];
|
||||||
|
var result = GetJson(parameter.MemberName, parameter1.MemberName, model.Args.Count() == 2);
|
||||||
|
if (model.Args.Count > 2)
|
||||||
|
{
|
||||||
|
result = GetJson(result, model.Args[2].MemberName, model.Args.Count() == 3);
|
||||||
|
}
|
||||||
|
if (model.Args.Count > 3)
|
||||||
|
{
|
||||||
|
result = GetJson(result, model.Args[3].MemberName, model.Args.Count() == 4);
|
||||||
|
}
|
||||||
|
if (model.Args.Count > 4)
|
||||||
|
{
|
||||||
|
result = GetJson(result, model.Args[4].MemberName, model.Args.Count() == 5);
|
||||||
|
}
|
||||||
|
if (model.Args.Count > 5)
|
||||||
|
{
|
||||||
|
result = GetJson(result, model.Args[5].MemberName, model.Args.Count() == 6);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GetJson(object memberName1, object memberName2, bool isLast)
|
||||||
|
{
|
||||||
|
return $"JSON_VALUE({memberName1}, '$.'+"+memberName2+")";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user