From af4b8284e00aabf2d5a8be6300eff8d01985504a Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Sat, 2 Apr 2022 11:41:11 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20InsertDict/UpdateDict?= =?UTF-8?q?=20=E7=AD=89=E5=AD=97=E5=85=B8=E6=93=8D=E4=BD=9C=E5=9C=A8=20DbC?= =?UTF-8?q?ontext.Orm=20=E4=B8=8B=E6=97=A0=E6=B3=95=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E7=9A=84=20bug=EF=BC=9B#1064?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql/Extensions/FreeSqlGlobalExtensions.cs | 12 +++------ .../Internal/CommonProvider/BaseDbProvider.cs | 25 ++++++++++++++----- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/FreeSql/Extensions/FreeSqlGlobalExtensions.cs b/FreeSql/Extensions/FreeSqlGlobalExtensions.cs index df2ea79d..d34a81a9 100644 --- a/FreeSql/Extensions/FreeSqlGlobalExtensions.cs +++ b/FreeSql/Extensions/FreeSqlGlobalExtensions.cs @@ -771,8 +771,7 @@ SELECT "); internal readonly InsertProvider> _insertProvider; internal InsertDictImpl(IFreeSql orm) { - _insertProvider = (orm as BaseDbProvider ?? throw new Exception("IFreeSql 无法转换成 BaseDbProvider")) - .CreateInsertProvider>() as InsertProvider>; + _insertProvider = orm.Insert>() as InsertProvider>; } public InsertDictImpl AsTable(string tableName) @@ -837,8 +836,7 @@ SELECT "); internal readonly UpdateProvider> _updateProvider; internal UpdateDictImpl(IFreeSql orm) { - _updateProvider = (orm as BaseDbProvider ?? throw new Exception("IFreeSql 无法转换成 BaseDbProvider")) - .CreateUpdateProvider>(null) as UpdateProvider>; + _updateProvider = orm.Update>(null) as UpdateProvider>; } public UpdateDictImpl WherePrimary(params string[] primarys) @@ -926,8 +924,7 @@ SELECT "); internal readonly InsertOrUpdateProvider> _insertOrUpdateProvider; internal InsertOrUpdateDictImpl(IFreeSql orm) { - _insertOrUpdateProvider = (orm as BaseDbProvider ?? throw new Exception("IFreeSql 无法转换成 BaseDbProvider")) - .CreateInsertOrUpdateProvider>() as InsertOrUpdateProvider>; + _insertOrUpdateProvider = orm.InsertOrUpdate>() as InsertOrUpdateProvider>; } public InsertOrUpdateDictImpl WherePrimary(params string[] primarys) @@ -980,8 +977,7 @@ SELECT "); internal readonly DeleteProvider> _deleteProvider; internal DeleteDictImpl(IFreeSql orm) { - _deleteProvider = (orm as BaseDbProvider ?? throw new Exception("IFreeSql 无法转换成 BaseDbProvider")) - .CreateDeleteProvider>(null) as DeleteProvider>; + _deleteProvider = orm.Delete>(null) as DeleteProvider>; } public DeleteDictImpl AsTable(string tableName) diff --git a/FreeSql/Internal/CommonProvider/BaseDbProvider.cs b/FreeSql/Internal/CommonProvider/BaseDbProvider.cs index 44f3c75e..96528c44 100644 --- a/FreeSql/Internal/CommonProvider/BaseDbProvider.cs +++ b/FreeSql/Internal/CommonProvider/BaseDbProvider.cs @@ -15,15 +15,28 @@ namespace FreeSql.Internal.CommonProvider public ISelect Select() where T1 : class => CreateSelectProvider(null); public ISelect Select(object dywhere) where T1 : class => CreateSelectProvider(dywhere); - public IInsert Insert() where T1 : class + public IInsert Insert() where T1 : class => CreateInsertProvider(); + public IInsert Insert(T1 source) where T1 : class { if (typeof(T1) == typeof(Dictionary)) throw new Exception("请使用 fsql.InsertDict(dict) 方法插入字典数据"); - return CreateInsertProvider(); + return this.Insert().AppendData(source); + } + public IInsert Insert(T1[] source) where T1 : class + { + if (typeof(T1) == typeof(Dictionary)) throw new Exception("请使用 fsql.InsertDict(dict) 方法插入字典数据"); + return this.Insert().AppendData(source); + } + public IInsert Insert(List source) where T1 : class + { + + if (typeof(T1) == typeof(Dictionary)) throw new Exception("请使用 fsql.InsertDict(dict) 方法插入字典数据"); + return this.Insert().AppendData(source); + } + public IInsert Insert(IEnumerable source) where T1 : class + { + if (typeof(T1) == typeof(Dictionary)) throw new Exception("请使用 fsql.InsertDict(dict) 方法插入字典数据"); + return this.Insert().AppendData(source); } - public IInsert Insert(T1 source) where T1 : class => this.Insert().AppendData(source); - public IInsert Insert(T1[] source) where T1 : class => this.Insert().AppendData(source); - public IInsert Insert(List source) where T1 : class => this.Insert().AppendData(source); - public IInsert Insert(IEnumerable source) where T1 : class => this.Insert().AppendData(source); public IUpdate Update() where T1 : class => CreateUpdateProvider(null); public IUpdate Update(object dywhere) where T1 : class => CreateUpdateProvider(dywhere); public IDelete Delete() where T1 : class => CreateDeleteProvider(null);