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);