diff --git a/Src/Asp.Net/SqlSugar/Infrastructure/DependencyManagement.cs b/Src/Asp.Net/SqlSugar/Infrastructure/DependencyManagement.cs index a54bfc6c6..2888c2310 100644 --- a/Src/Asp.Net/SqlSugar/Infrastructure/DependencyManagement.cs +++ b/Src/Asp.Net/SqlSugar/Infrastructure/DependencyManagement.cs @@ -1,10 +1,8 @@ -using MySql.Data.MySqlClient; -using Newtonsoft.Json; -using System; +using System; using System.Collections.Generic; using System.Data.SqlClient; -using System.Data.SQLite; using System.Linq; +using System.Reflection; using System.Text; namespace SqlSugar { @@ -19,34 +17,35 @@ namespace SqlSugar { try { - var settings =JsonConvert.DefaultSettings; + Assembly asmb = Assembly.LoadFrom("Newtonsoft.Json.dll"); + asmb = CheckAssembly(asmb); IsTryJsonNet = true; } - catch (Exception ex) + catch { - var message= ErrorMessage.GetThrowMessage( - " Some functions are used in newtonsoft ,Nuget references newtonsoft.json, 9.0.0.1 + ."+ex.Message, - " 部分功能用到newtonsoft,Nuget上面下载安装 newtonsoft.json, 9.0.0.1及以上版本,如果有版本兼容问题请先删除原有引用,详细错误:"+ex.Message); - Check.ThrowNotSupportedException(message); + var message = ErrorMessage.GetThrowMessage( + " Some functions are used in newtonsoft ,Nuget references Newtonsoft.Json 9.0.0.1 + .", + " 部分功能用到Newtonsoft.Json.dll,需要在Nuget上安装 Newtonsoft.Json 9.0.0.1及以上版本,如果有版本兼容问题请先删除原有引用"); + throw new Exception(message); } } } - public static void TryMySqlData() { if (!IsTryMySqlData) { try { - using (MySqlConnection mySql = new MySqlConnection()){} + Assembly asmb = Assembly.LoadFrom("MySql.Data.dll"); + asmb = CheckAssembly(asmb); IsTryMySqlData = true; } - catch (Exception ex) + catch { var message = ErrorMessage.GetThrowMessage( - "You need to refer to MySql.Data.dll"+ex.Message, - "需要MySql.Data.dll请在Nuget安装最新版本,如果有版本兼容问题请先删除原有引用,详细错误:" + ex.Message); - Check.ThrowNotSupportedException(message); + "You need to refer to MySql.Data.dll" , + "需要引用MySql.Data.dll,请在Nuget安装最新稳定版本,如果有版本兼容问题请先删除原有引用"); + throw new Exception(message); } } } @@ -57,17 +56,26 @@ namespace SqlSugar { try { - using (SQLiteConnection mySql = new SQLiteConnection()) { } + Assembly asmb = Assembly.LoadFrom("System.Data.SQLite.dll"); + asmb = CheckAssembly(asmb); IsTrySqlite = true; } catch (Exception ex) { var message = ErrorMessage.GetThrowMessage( - ex.Message, - "需要Sqlite相关的驱动,如果有版本兼容问题请先删除原有引用,如果有版本兼容问题请先删除原有引用,详细错误:" + ex.Message); - Check.ThrowNotSupportedException(message); + "You need to refer to System.Data.SQLite.dll", + "你需要引用System.Data.SQLite.dll,如果有版本兼容问题请先删除原有引用"); + throw new Exception(message); } } } + + private static Assembly CheckAssembly(Assembly asmb) + { + if (asmb == null) throw new Exception(""); + asmb = null; + return asmb; + } + } } diff --git a/Src/Asp.Net/SqlSugar/Infrastructure/InstanceFactory.cs b/Src/Asp.Net/SqlSugar/Infrastructure/InstanceFactory.cs index db3d42196..5bf962ab6 100644 --- a/Src/Asp.Net/SqlSugar/Infrastructure/InstanceFactory.cs +++ b/Src/Asp.Net/SqlSugar/Infrastructure/InstanceFactory.cs @@ -281,7 +281,7 @@ namespace SqlSugar var result = (Restult)Activator.CreateInstance(type, true); return result; } - private static T CreateInstance(string className) + public static T CreateInstance(string className) { Type type; if (typeCache.ContainsKey(className)) diff --git a/Src/Asp.Net/SqlSugar/Infrastructure/RewritableMethods.cs b/Src/Asp.Net/SqlSugar/Infrastructure/RewritableMethods.cs index d8e71dc03..9df038461 100644 --- a/Src/Asp.Net/SqlSugar/Infrastructure/RewritableMethods.cs +++ b/Src/Asp.Net/SqlSugar/Infrastructure/RewritableMethods.cs @@ -6,7 +6,6 @@ using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; -using Newtonsoft.Json; namespace SqlSugar { public class RewritableMethods : IRewritableMethods @@ -192,9 +191,11 @@ namespace SqlSugar public string SerializeObject(object value) { DependencyManagement.TryJsonNet(); - return JsonConvert.SerializeObject(value); + return JsonHelper.SerializeObject(value); } + + /// /// Serialize Object /// @@ -203,8 +204,7 @@ namespace SqlSugar public T DeserializeObject(string value) { DependencyManagement.TryJsonNet(); - var jSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; - return JsonConvert.DeserializeObject(value, jSetting); + return JsonHelper.DeserializeObject(value); } #endregion @@ -257,7 +257,7 @@ namespace SqlSugar } deserializeObject.Add(childRow); } - return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(deserializeObject)); + return this.DeserializeObject(this.SerializeObject(deserializeObject)); } #endregion diff --git a/Src/Asp.Net/SqlSugar/Properties/AssemblyInfo.cs b/Src/Asp.Net/SqlSugar/Properties/AssemblyInfo.cs index b3e9483d2..31f15d041 100644 --- a/Src/Asp.Net/SqlSugar/Properties/AssemblyInfo.cs +++ b/Src/Asp.Net/SqlSugar/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("4.5.1.7")] -[assembly: AssemblyFileVersion("4.5.1.7")] +[assembly: AssemblyVersion("4.5.1.8")] +[assembly: AssemblyFileVersion("4.5.1.8")] diff --git a/Src/Asp.Net/SqlSugar/SqlSugar.csproj b/Src/Asp.Net/SqlSugar/SqlSugar.csproj index 34d197161..947634899 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.Net/SqlSugar/SqlSugar.csproj @@ -73,6 +73,7 @@ + diff --git a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs index b22aa27b1..d039201cd 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs +++ b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs @@ -22,6 +22,7 @@ namespace SqlSugar { base.Context = this; base.CurrentConnectionConfig = config; + Check.ArgumentNullException(config, "config is null"); switch (config.DbType) { case DbType.MySql: @@ -33,9 +34,9 @@ namespace SqlSugar DependencyManagement.TrySqlite(); break; case DbType.Oracle: - throw new Exception("Oracle developed 60%,to be continued "); + throw new Exception("Oracle developed 60%,to be continued"); default: - break; + throw new Exception("ConnectionConfig.DbType is null"); } } #endregion diff --git a/Src/Asp.Net/SqlSugar/Utilities/ErrorMessage.cs b/Src/Asp.Net/SqlSugar/Utilities/ErrorMessage.cs index 4e6e9ed67..4e5c4eace 100644 --- a/Src/Asp.Net/SqlSugar/Utilities/ErrorMessage.cs +++ b/Src/Asp.Net/SqlSugar/Utilities/ErrorMessage.cs @@ -71,7 +71,8 @@ namespace SqlSugar { List formatArgs = new List() { enMessage, cnMessage }; formatArgs.AddRange(args); - return string.Format("\r\n English Message : {0}\r\n Chinese Message : {1}", formatArgs.ToArray()); + return string.Format(@"English Message : {0} +Chinese Message : {1}", formatArgs.ToArray()); } } } diff --git a/Src/Asp.Net/SqlSugar/Utilities/JsonHelper.cs b/Src/Asp.Net/SqlSugar/Utilities/JsonHelper.cs new file mode 100644 index 000000000..1c2f2a172 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Utilities/JsonHelper.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SqlSugar +{ + public class JsonHelper + { + public static string SerializeObject(object value) + { + return JsonConvert.SerializeObject(value); + } + + public static T DeserializeObject(string value) + { + var jSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; + return JsonConvert.DeserializeObject(value, jSetting); + } + } +}