From 1d3bfdadfd034b5975c21ba8db11ac5714a954c3 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Thu, 16 May 2019 22:16:55 +0800 Subject: [PATCH] Support Json --- Src/Asp.Net/SqlServerTest/UnitTest/Main.cs | 1 + Src/Asp.Net/SqlServerTest/UnitTest/UJson.cs | 4 ++-- .../Abstract/DbMaintenanceProvider/Methods.cs | 6 ++++++ .../UpdateProvider/UpdateableProvider.cs | 6 +++++- .../MemberInitExpressionResolve.cs | 21 +++++++++++++++---- .../SqlSugar/Interface/IDbMaintenance.cs | 1 + 6 files changed, 32 insertions(+), 7 deletions(-) diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs index f085c43eb..c8f9bd850 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs @@ -19,6 +19,7 @@ namespace OrmTest OnLogExecuting = (sql, p) => { Console.WriteLine(sql); + Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value))); } } }); diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UJson.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UJson.cs index 8ec8b54c3..12b98d904 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/UJson.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UJson.cs @@ -12,10 +12,10 @@ namespace OrmTest public static void Json() { Db.CodeFirst.InitTables(); - Db.DbMaintenance.TruncateTable("JsonTest"); + Db.DbMaintenance.TruncateTable(); Db.Insertable(new JsonTest() { Order = new Order { Id = 1, Name = "order1" } }).ExecuteCommand(); var list = Db.Queryable().ToList(); - Db.Updateable(new JsonTest() { Id=1,Order = new Order { Id = 2, Name = "order2" } }).ExecuteCommand(); + Db.Updateable(new JsonTest() { Id = 1, Order = new Order { Id = 2, Name = "order2" } }).ExecuteCommand(); var list2 = Db.Queryable().ToList(); } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs b/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs index 951d6bb16..897b68893 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs @@ -171,6 +171,12 @@ namespace SqlSugar this.Context.Ado.ExecuteCommand(string.Format(this.DropTableSql, tableName)); return true; } + + public virtual bool TruncateTable() + { + this.Context.InitMppingInfo(); + return this.TruncateTable(this.Context.EntityMaintenance.GetEntityInfo().DbTableName); + } public virtual bool DropColumn(string tableName, string columnName) { columnName = this.SqlBuilder.GetTranslationColumnName(columnName); diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 5ae0a7e96..5012409c2 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -415,7 +415,11 @@ namespace SqlSugar { if (this.EntityInfo.Columns.Any(it => it.IsTranscoding)) { - Check.Exception(true, ErrorMessage.GetThrowMessage("UpdateColumns no support IsTranscoding", "UpdateColumns方式更新不支持IsTranscoding,你可以使用db.Updateable(实体)的方式更新")); + Check.Exception(true, ErrorMessage.GetThrowMessage("UpdateColumns no support IsTranscoding", "SetColumns方式更新不支持IsTranscoding,你可以使用db.Updateable(实体)的方式更新")); + } + if (this.EntityInfo.Columns.Any(it => it.IsJson)) + { + Check.Exception(true, ErrorMessage.GetThrowMessage("UpdateColumns no support IsJson", "SetColumns方式更新不支持IsJson,你可以使用db.Updateable(实体)的方式更新")); } } private void SetUpdateItemByDic(int i, T item, List updateItem) diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberInitExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberInitExpressionResolve.cs index c0efaef9c..7374d14e5 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberInitExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberInitExpressionResolve.cs @@ -101,6 +101,19 @@ namespace SqlSugar var result = GetNewExpressionValue(item); this.Context.Result.Append(base.Context.GetEqString(memberName, result)); } + else if (item is MemberInitExpression) + { + try + { + var value =ExpressionTool.DynamicInvoke(item); + var parameterName = AppendParameter(value); + parameter.Context.Result.Append(base.Context.GetEqString(memberName, parameterName)); + } + catch (Exception ex) + { + throw new NotSupportedException("Not Supported " + item.ToString() + " " + ex.Message); + } + } } } @@ -165,10 +178,10 @@ namespace SqlSugar } } - private bool IsSubMethod(MethodCallExpression express) - { - return SubTools.SubItemsConst.Any(it =>express.Object != null && express.Object.Type.Name == "Subqueryable`1"); - } + //private bool IsSubMethod(MethodCallExpression express) + //{ + // return SubTools.SubItemsConst.Any(it =>express.Object != null && express.Object.Type.Name == "Subqueryable`1"); + //} private bool IsExtMethod(string methodName) { if (this.Context.SqlFuncServices == null) return false; diff --git a/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs index 614338d88..cebec9fd2 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs @@ -28,6 +28,7 @@ namespace SqlSugar #region DDL bool DropTable(string tableName); bool TruncateTable(string tableName); + bool TruncateTable(); bool CreateTable(string tableName, List columns,bool isCreatePrimaryKey=true); bool AddColumn(string tableName, DbColumnInfo column); bool UpdateColumn(string tableName, DbColumnInfo column);