From 5027ec90bcf7773143406a7f5a83d1bab6f1032a Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 12 Sep 2017 11:08:29 +0800 Subject: [PATCH] 4.5.1.7 --- .../Infrastructure/DependencyManagement.cs | 73 ++++++++++++++++++ .../Infrastructure/RewritableMethods.cs | 2 + .../SqlSugar/Properties/AssemblyInfo.cs | 4 +- Src/Asp.Net/SqlSugar/SqlSugar.csproj | 1 + Src/Asp.Net/SqlSugar/SqlSugarClient.cs | 17 +++- .../SqliteTest/DataBase/SqlSugar4xTest.sqlite | Bin 430080 -> 458752 bytes 6 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 Src/Asp.Net/SqlSugar/Infrastructure/DependencyManagement.cs diff --git a/Src/Asp.Net/SqlSugar/Infrastructure/DependencyManagement.cs b/Src/Asp.Net/SqlSugar/Infrastructure/DependencyManagement.cs new file mode 100644 index 000000000..a54bfc6c6 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Infrastructure/DependencyManagement.cs @@ -0,0 +1,73 @@ +using MySql.Data.MySqlClient; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Data.SqlClient; +using System.Data.SQLite; +using System.Linq; +using System.Text; +namespace SqlSugar +{ + internal class DependencyManagement + { + private static bool IsTryJsonNet = false; + private static bool IsTryMySqlData = false; + private static bool IsTrySqlite = false; + public static void TryJsonNet() + { + if (!IsTryJsonNet) + { + try + { + var settings =JsonConvert.DefaultSettings; + IsTryJsonNet = true; + } + catch (Exception ex) + { + 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); + } + } + } + + public static void TryMySqlData() + { + if (!IsTryMySqlData) + { + try + { + using (MySqlConnection mySql = new MySqlConnection()){} + IsTryMySqlData = true; + } + catch (Exception ex) + { + var message = ErrorMessage.GetThrowMessage( + "You need to refer to MySql.Data.dll"+ex.Message, + "需要MySql.Data.dll请在Nuget安装最新版本,如果有版本兼容问题请先删除原有引用,详细错误:" + ex.Message); + Check.ThrowNotSupportedException(message); + } + } + } + + public static void TrySqlite() + { + if (!IsTrySqlite) + { + try + { + using (SQLiteConnection mySql = new SQLiteConnection()) { } + IsTrySqlite = true; + } + catch (Exception ex) + { + var message = ErrorMessage.GetThrowMessage( + ex.Message, + "需要Sqlite相关的驱动,如果有版本兼容问题请先删除原有引用,如果有版本兼容问题请先删除原有引用,详细错误:" + ex.Message); + Check.ThrowNotSupportedException(message); + } + } + } + } +} diff --git a/Src/Asp.Net/SqlSugar/Infrastructure/RewritableMethods.cs b/Src/Asp.Net/SqlSugar/Infrastructure/RewritableMethods.cs index bb3d6b2e7..d8e71dc03 100644 --- a/Src/Asp.Net/SqlSugar/Infrastructure/RewritableMethods.cs +++ b/Src/Asp.Net/SqlSugar/Infrastructure/RewritableMethods.cs @@ -191,6 +191,7 @@ namespace SqlSugar /// public string SerializeObject(object value) { + DependencyManagement.TryJsonNet(); return JsonConvert.SerializeObject(value); } @@ -201,6 +202,7 @@ namespace SqlSugar /// public T DeserializeObject(string value) { + DependencyManagement.TryJsonNet(); var jSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; return JsonConvert.DeserializeObject(value, jSetting); } diff --git a/Src/Asp.Net/SqlSugar/Properties/AssemblyInfo.cs b/Src/Asp.Net/SqlSugar/Properties/AssemblyInfo.cs index 9048bcb03..b3e9483d2 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.6")] -[assembly: AssemblyFileVersion("4.5.1.6")] +[assembly: AssemblyVersion("4.5.1.7")] +[assembly: AssemblyFileVersion("4.5.1.7")] diff --git a/Src/Asp.Net/SqlSugar/SqlSugar.csproj b/Src/Asp.Net/SqlSugar/SqlSugar.csproj index 8725942ba..34d197161 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.Net/SqlSugar/SqlSugar.csproj @@ -72,6 +72,7 @@ + diff --git a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs index 3cd74d59e..b22aa27b1 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs +++ b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs @@ -16,15 +16,26 @@ namespace SqlSugar /// public partial class SqlSugarClient : SqlSugarAccessory, IDisposable { - + #region Constructor public SqlSugarClient(ConnectionConfig config) { base.Context = this; base.CurrentConnectionConfig = config; - if (config.DbType == DbType.Oracle) + switch (config.DbType) { - throw new Exception("Oracle developed 60%,to be continued "); + case DbType.MySql: + DependencyManagement.TryMySqlData(); + break; + case DbType.SqlServer: + break; + case DbType.Sqlite: + DependencyManagement.TrySqlite(); + break; + case DbType.Oracle: + throw new Exception("Oracle developed 60%,to be continued "); + default: + break; } } #endregion diff --git a/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite b/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite index 0b62b3d19615e11bf5ea2c9da3a347f4a44e5e9f..c0285bbffce19e2465adcc570d15501928ac3861 100644 GIT binary patch literal 458752 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

a(7J{e4~{X)5MfYWY%G~lWo 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 literal 430080 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