From 06a669a1da1485d473b41caea82662629a4164df Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Mon, 20 Jun 2022 13:38:02 +0800 Subject: [PATCH] Add demo --- Src/Asp.Net/Json2SqlTest/App.config | 6 + Src/Asp.Net/Json2SqlTest/DeleteableTest.cs | 51 +++++ Src/Asp.Net/Json2SqlTest/InsertableTest.cs | 53 +++++ Src/Asp.Net/Json2SqlTest/Json2SqlTest.csproj | 63 +++++ Src/Asp.Net/Json2SqlTest/Program.cs | 51 +++++ .../Json2SqlTest/Properties/AssemblyInfo.cs | 36 +++ Src/Asp.Net/Json2SqlTest/QueryableTest.cs | 215 ++++++++++++++++++ Src/Asp.Net/Json2SqlTest/UpdateableTest.cs | 69 ++++++ Src/Asp.Net/SqlSugar.sln | 10 +- 9 files changed, 552 insertions(+), 2 deletions(-) create mode 100644 Src/Asp.Net/Json2SqlTest/App.config create mode 100644 Src/Asp.Net/Json2SqlTest/DeleteableTest.cs create mode 100644 Src/Asp.Net/Json2SqlTest/InsertableTest.cs create mode 100644 Src/Asp.Net/Json2SqlTest/Json2SqlTest.csproj create mode 100644 Src/Asp.Net/Json2SqlTest/Program.cs create mode 100644 Src/Asp.Net/Json2SqlTest/Properties/AssemblyInfo.cs create mode 100644 Src/Asp.Net/Json2SqlTest/QueryableTest.cs create mode 100644 Src/Asp.Net/Json2SqlTest/UpdateableTest.cs diff --git a/Src/Asp.Net/Json2SqlTest/App.config b/Src/Asp.Net/Json2SqlTest/App.config new file mode 100644 index 000000000..8324aa6ff --- /dev/null +++ b/Src/Asp.Net/Json2SqlTest/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Src/Asp.Net/Json2SqlTest/DeleteableTest.cs b/Src/Asp.Net/Json2SqlTest/DeleteableTest.cs new file mode 100644 index 000000000..b9c8cadee --- /dev/null +++ b/Src/Asp.Net/Json2SqlTest/DeleteableTest.cs @@ -0,0 +1,51 @@ +using SqlSugar; +using System; +using System.Collections.Generic; + +namespace Test +{ + partial class Program + { + + private static void Deleteable01(JsonClient jsonToSqlClient) + { + jsonToSqlClient.Context.Queryable().AS("order").Max("id"); + Demo111(jsonToSqlClient); + Demo222(jsonToSqlClient); + Demo333(jsonToSqlClient); + } + + private static void Demo111(JsonClient jsonToSqlClient) + { + var json = @" + { + ""Table"":""order"", + Where:[ ""id"","" = "",""{int}:1"" ] + } + "; + var x1 = jsonToSqlClient.Deleteable(json).ToSqlList(); + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + private static void Demo222(JsonClient jsonToSqlClient) + { + var json = @" + { + ""Table"":""order"", + Where:[ ""id"","" = "",""{int}:1"" ] + } + "; + var x1 = jsonToSqlClient.Deleteable(json).ToSqlList(); + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + private static void Demo333(JsonClient jsonToSqlClient) + { + var json = @" + { + ""Table"":""order"" + } + "; + var x1 = jsonToSqlClient.Deleteable(json).ToSqlList(); + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + } +} diff --git a/Src/Asp.Net/Json2SqlTest/InsertableTest.cs b/Src/Asp.Net/Json2SqlTest/InsertableTest.cs new file mode 100644 index 000000000..ad6601d93 --- /dev/null +++ b/Src/Asp.Net/Json2SqlTest/InsertableTest.cs @@ -0,0 +1,53 @@ +using SqlSugar; +using System; +using System.Collections.Generic; + +namespace Test +{ + partial class Program + { + + private static void Insetable01(JsonClient jsonToSqlClient) + { + jsonToSqlClient.Context.Queryable().AS("order").Max("id"); + Demo1(jsonToSqlClient); + Demo2(jsonToSqlClient); + Demo3(jsonToSqlClient); + } + + private static void Demo1(JsonClient jsonToSqlClient) + { + var json = @" + { + ""Table"":""order"", + Columns:{name:""{string}:1"",price:""{decimal}:1""} + } + "; + var x1 = jsonToSqlClient.Insertable(json).ToSqlList(); + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + private static void Demo2(JsonClient jsonToSqlClient) + { + var json = @" + { + ""Table"":""order"", + Columns:[ {name:""{string}:2"",price:""{decimal}:2""} , {name:""{string}:1"",price:""{decimal}:1""} ] + } + "; + var x1 = jsonToSqlClient.Insertable(json).ToSqlList(); + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + private static void Demo3(JsonClient jsonToSqlClient) + { + var json = @" + { + ""Table"":""order"", + Identity:""id"", + Columns: {name:""{string}:2"",price:""{decimal}:2""} + } + "; + var x1 = jsonToSqlClient.Insertable(json).ToResult(); + + } + } +} diff --git a/Src/Asp.Net/Json2SqlTest/Json2SqlTest.csproj b/Src/Asp.Net/Json2SqlTest/Json2SqlTest.csproj new file mode 100644 index 000000000..a85afd3d6 --- /dev/null +++ b/Src/Asp.Net/Json2SqlTest/Json2SqlTest.csproj @@ -0,0 +1,63 @@ + + + + + Debug + AnyCPU + {B30F8D3F-7A48-4C7B-B808-A3F900B9F3D4} + Exe + Json2SqlTest + Json2SqlTest + v4.6 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + {489bb790-226c-4fad-8d1e-51d72a7ff8e5} + SqlSugar + + + + \ No newline at end of file diff --git a/Src/Asp.Net/Json2SqlTest/Program.cs b/Src/Asp.Net/Json2SqlTest/Program.cs new file mode 100644 index 000000000..36dadeaaa --- /dev/null +++ b/Src/Asp.Net/Json2SqlTest/Program.cs @@ -0,0 +1,51 @@ +using SqlSugar; +using System; +using System.Collections.Generic; + +namespace Test +{ + partial class Program + { + static void Main(string[] args) + { + JsonClient jsonToSqlClient = new JsonClient(); + //jsonToSqlClient.Context = new SqlSugarClient(new ConnectionConfig() + //{ + // DbType = DbType.SqlServer, + // IsAutoCloseConnection = true, + // ConnectionString = "server=.;uid=sa;pwd=sasa;database=SQLSUGAR4XTEST" + //}); + jsonToSqlClient.Context = new SqlSugarClient(new ConnectionConfig() + { + DbType = DbType.MySql, + IsAutoCloseConnection = true, + ConnectionString = "server=localhost;Database=SqlSugar4xTest;Uid=root;Pwd=haosql" + }); ; + jsonToSqlClient.Context.Aop.OnLogExecuted = (sql, p) => + { + Console.WriteLine(sql); + }; + + Insetable01(jsonToSqlClient); + + Description(jsonToSqlClient); + FuncText(jsonToSqlClient); + OrderByTest(jsonToSqlClient); + GroupByTest(jsonToSqlClient); + SelectTest(jsonToSqlClient); + JoinTest(jsonToSqlClient); + WhereTest(jsonToSqlClient); + PageTest(jsonToSqlClient); + PageTest2(jsonToSqlClient); + PageTest3(jsonToSqlClient); + + Updateable01(jsonToSqlClient); + Deleteable01(jsonToSqlClient); + + + Console.WriteLine(); + } + + + } +} diff --git a/Src/Asp.Net/Json2SqlTest/Properties/AssemblyInfo.cs b/Src/Asp.Net/Json2SqlTest/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..9ad832bd8 --- /dev/null +++ b/Src/Asp.Net/Json2SqlTest/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Json2SqlTest")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("微软中国")] +[assembly: AssemblyProduct("Json2SqlTest")] +[assembly: AssemblyCopyright("Copyright © 微软中国 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("b30f8d3f-7a48-4c7b-b808-a3f900b9f3d4")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Src/Asp.Net/Json2SqlTest/QueryableTest.cs b/Src/Asp.Net/Json2SqlTest/QueryableTest.cs new file mode 100644 index 000000000..ddce760ad --- /dev/null +++ b/Src/Asp.Net/Json2SqlTest/QueryableTest.cs @@ -0,0 +1,215 @@ +using SqlSugar; +using System; +using System.Collections.Generic; + +namespace Test +{ + partial class Program + { + #region Queryable + private static void FuncText(JsonClient jsonToSqlClient) + { + jsonToSqlClient.Context.Queryable().AS("order").Max("id"); + var json = @" + { + ""Table"":""order"", + Select:[ [{SqlFunc_AggregateMin:[""id""]},""id""], [{SqlFunc_GetDate:[]},""Date""] ] + } + "; + var x1 = jsonToSqlClient.Queryable(json).ToSqlList(); + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + private static void WhereTest(JsonClient jsonToSqlClient) + { + jsonToSqlClient.Context.Queryable().AS("order").Max("id"); + var json = @" + { + ""Table"":""order"", + Where:[ ""name"",""="", { SqlFunc_ToString:[""{string}:xxx""] } ], + Select:[ [{SqlFunc_AggregateMin:[""id""]},""id""], [{SqlFunc_GetDate:[]},""Date""] ] + } + "; + var x1 = jsonToSqlClient.Queryable(json).ToSqlList(); + var json2 = @" + { + ""Table"":""order"", + Where: [{ ""FieldName"":""id"",""ConditionalType"":""0"",""FieldValue"":""1""}], + Select:[ + [{SqlFunc_GetDate:[]},""Date""] , + [""Name"",""Name""], + [""Id""], + ""price"" + ] + } + "; + var x2 = jsonToSqlClient.Queryable(json2).ToSqlList(); + + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + var list2 = jsonToSqlClient.Context.Ado.SqlQuery(x2[0].Sql, x2[0].Parameters); + } + private static void JoinTest(JsonClient jsonToSqlClient) + { + var onList = + new ObjectFuncModel() + { + FuncName = "Equals", + Parameters = new List{ + "d.orderid","o.id" + } + + }; + + var selectItems = new List() { + new SelectModel() + { + AsName = "id", + FiledName = "o.id" + } + }; + var x = jsonToSqlClient.Context.Queryable() + .AS("order", "o") + .AddJoinInfo("orderdetail", "d", onList, JoinType.Left) + .Select(selectItems) + .ToList(); + var json = @" +{ + ""Table"":[ ""order"",""o""], + ""LeftJoin01"": [""orderdetail"", ""d"", [ ""d.orderid"","">"",""o.id"" ]], + ""Select"":[""o.id"" ,[""d.itemid"",""newitemid""]] +} +"; + var x1 = jsonToSqlClient.Queryable(json).ToSqlList(); + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + private static void GroupByTest(JsonClient jsonToSqlClient) + { + jsonToSqlClient.Context.Queryable() + .AS("order").GroupBy(new List { + new GroupByModel(){ + FieldName="id" + } }).Select("iD").ToList(); + + var json = @" +{ + ""Table"": ""order"" , + GroupBy:[""name""], + Having: [{SqlFunc_AggregateAvg:[""id""]},"">"",""{int}:1"" ], + Select:[ [{SqlFunc_AggregateAvg:[""id""]},""id""],""name"" ] +} +"; + var x1 = jsonToSqlClient.Queryable(json).ToSqlList(); + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + private static void OrderByTest(JsonClient jsonToSqlClient) + { + jsonToSqlClient.Context.Queryable() + .AS("order").OrderBy(new List { + new OrderByModel(){ + FieldName="id", + OrderByType=OrderByType.Desc + }, + new OrderByModel(){ + FieldName="name", + OrderByType=OrderByType.Asc + } + }).ToList(); + + + var x1 = jsonToSqlClient.Queryable("{Table:\"order\",OrderBy:[{FieldName:\"id\"},{FieldName:\"name\",OrderByType:\"desc\"}]}").ToSqlList(); + var list = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + + + var x2 = jsonToSqlClient.Queryable("{Table:\"order\",OrderBy:[[\"id\",\"desc\"],\"name\"]}").ToSqlList(); + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x2[0].Sql, x2[0].Parameters); + } + private static void PageTest(JsonClient jsonToSqlClient) + { + var x1 = jsonToSqlClient.Queryable("{Table:\"order\",OrderBy:[ [\"id\",\"desc\"] ],PageNumber:1,PageSize:8}").ToSqlList(); + var list = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + private static void SelectTest(JsonClient jsonToSqlClient) + { + var list = new List() { + new SelectModel() + { + AsName = "id1", + FiledName = "id" + }, + new SelectModel() + { + + FiledName = "id" + } + }; + jsonToSqlClient.Context + .Queryable() + .AS("order").Select(list).ToList(); + } + private static void Description(JsonClient jsonToSqlClient) + { + jsonToSqlClient.Context.Queryable().AS("order").Max("id"); + var json = @" + { + ""Table"":""order"", + PageNumber:""1"", + PageSize:""100"" + } + "; + var x1 = jsonToSqlClient.Queryable(json).ToResult(); + var result = jsonToSqlClient.Context.Utilities.SerializeObject(x1); + } + private static void PageTest2(JsonClient jsonToSqlClient) + { + var json = "{Table:\"order\",OrderBy:[ [\"id\",\"desc\"] ],Where:[\"name\",\"=\",\"{string}:a\" ],PageNumber:1,PageSize:8}"; + + var tableNames = jsonToSqlClient.GetTableNameList(json);//通过JSON获取JSON所有表 + var configs = GetConfigByUser(tableNames);//通过表获取行列过滤备注等信息 + + var sqlList = jsonToSqlClient + .Queryable(json) + .UseAuthentication(configs)//查询启用行列过滤 + .ShowDesciption()//查询返回备注 + .ToResult(); + + } + private static void PageTest3(JsonClient jsonToSqlClient) + { + var json = "{Table:\"order\",OrderBy:[ [\"id\",\"desc\"] ]," + + "Where:[\"name\",\"=\",\"{string}:a\" ]," + + "PageNumber:1,PageSize:8," + + "Select:[\"id\",\"name\",\"price\"]}"; + + var tableNames = jsonToSqlClient.GetTableNameList(json);//通过JSON获取JSON所有表 + var configs = GetConfigByUser(tableNames);//通过表获取行列过滤备注等信息 + + var sqlList = jsonToSqlClient + .Queryable(json) + .UseAuthentication(configs)//查询启用行列过滤 + .ShowDesciption()//查询返回备注 + .ToResult(); + + } + private static List GetConfigByUser(List tableNames) + { + + JsonTableConfig config = new JsonTableConfig() + { + TableName = "order", + Columns = new List() + { + new JsonColumnConfig(){ Name="id",Description="编号" }, + new JsonColumnConfig(){ Name="Name",Description="名称" , Validate="required", ValidateMessage="{Description}不能为空" }, + new JsonColumnConfig(){ Name="Name",Description="名称" , Validate="unique", ValidateMessage="{Description}已存在" } + }, + Conditionals = new List() + { + new ConditionalModel(){ FieldName="id", ConditionalType= ConditionalType.Equal, FieldValue="1" } + } + }; + return new List() { config }; + } + + + #endregion + } +} diff --git a/Src/Asp.Net/Json2SqlTest/UpdateableTest.cs b/Src/Asp.Net/Json2SqlTest/UpdateableTest.cs new file mode 100644 index 000000000..26582a5e3 --- /dev/null +++ b/Src/Asp.Net/Json2SqlTest/UpdateableTest.cs @@ -0,0 +1,69 @@ +using SqlSugar; +using System; +using System.Collections.Generic; + +namespace Test +{ + partial class Program + { + + private static void Updateable01(JsonClient jsonToSqlClient) + { + jsonToSqlClient.Context.Queryable().AS("order").Max("id"); + Demo11(jsonToSqlClient); + Demo22(jsonToSqlClient); + Demo33(jsonToSqlClient); + Demo44(jsonToSqlClient); + } + + private static void Demo11(JsonClient jsonToSqlClient) + { + var json = @" + { + ""Table"":""order"", + Columns: { id:""{int}:1"" ,name:""{string}:1"" }, + WhereColumns:[""id""] + } + "; + var x1 = jsonToSqlClient.Updateable(json).ToSqlList(); + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + private static void Demo22(JsonClient jsonToSqlClient) + { + var json = @" + { + ""Table"":""order"", + Columns:[ {id:2,name:""{string}:2"",price:""{decimal}:2""} , {id:1,name:""{string}:1"",price:""{decimal}:1""} ], + WhereColumns:[""id""] + } + "; + var x1 = jsonToSqlClient.Updateable(json).ToSqlList(); + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + + private static void Demo33(JsonClient jsonToSqlClient) + { + var json = @" + { + ""Table"":""order"", + Columns: {name:""{string}:2"",price:""{decimal}:2""} , + Where:[""id"",""="",""{int}:11""] + } + "; + var x1 = jsonToSqlClient.Updateable(json).ToSqlList(); + var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + private static void Demo44(JsonClient jsonToSqlClient) + { + var json = @" + { + ""Table"":""order"", + Columns: {name:""{string}:2"",price:""{decimal}:2""} , + Where:[""id"",""="",""{int}:11""] + } + "; + var x1 = jsonToSqlClient.Updateable(json).ToSqlList(); + // var list1 = jsonToSqlClient.Context.Ado.SqlQuery(x1[0].Sql, x1[0].Parameters); + } + } +} diff --git a/Src/Asp.Net/SqlSugar.sln b/Src/Asp.Net/SqlSugar.sln index 833d99ffa..7b50a17b7 100644 --- a/Src/Asp.Net/SqlSugar.sln +++ b/Src/Asp.Net/SqlSugar.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31624.102 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.32414.318 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SqlSugar", "SqlSugar\SqlSugar.csproj", "{489BB790-226C-4FAD-8D1E-51D72A7FF8E5}" EndProject @@ -41,6 +41,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AccessTest", "AccessTest\Ac EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomDbTest", "CustomDbTest\CustomDbTest.csproj", "{7BAAEBFC-D86E-4127-8640-E7EFAB8F40EA}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Json2SqlTest", "Json2SqlTest\Json2SqlTest.csproj", "{B30F8D3F-7A48-4C7B-B808-A3F900B9F3D4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -115,6 +117,10 @@ Global {7BAAEBFC-D86E-4127-8640-E7EFAB8F40EA}.Debug|Any CPU.Build.0 = Debug|Any CPU {7BAAEBFC-D86E-4127-8640-E7EFAB8F40EA}.Release|Any CPU.ActiveCfg = Release|Any CPU {7BAAEBFC-D86E-4127-8640-E7EFAB8F40EA}.Release|Any CPU.Build.0 = Release|Any CPU + {B30F8D3F-7A48-4C7B-B808-A3F900B9F3D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B30F8D3F-7A48-4C7B-B808-A3F900B9F3D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B30F8D3F-7A48-4C7B-B808-A3F900B9F3D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B30F8D3F-7A48-4C7B-B808-A3F900B9F3D4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE