diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index d198eb6c..ce9ce69d 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -130,6 +130,13 @@
清空状态数据
+
+
+ 根据 lambda 条件删除数据
+
+
+
+
添加
@@ -525,5 +532,14 @@
+
+
+ 批量注入 Repository,可以参考代码自行调整
+
+
+
+
+
+
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlInsertTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlInsertTest.cs
index 73b8e612..48c9376e 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlInsertTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlInsertTest.cs
@@ -105,6 +105,11 @@ namespace FreeSql.Tests.MySqlConnector
Assert.Equal(1, g.mysql.Insert().AppendData(new TestEnumInsertTb { type = TestEnumInserTbType.sum211 }).ExecuteAffrows());
Assert.Equal(1, g.mysql.Insert().AppendData(new TestEnumInsertTb { type = TestEnumInserTbType.sum211 }).NoneParameter().ExecuteAffrows());
+
+ Assert.Equal(10, g.mysql.Select().Limit(10).InsertInto(null, a => new Topic
+ {
+ Title = a.Title
+ }));
}
[Fact]
public void ExecuteIdentity()
diff --git a/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengInsertTest.cs b/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengInsertTest.cs
index 988f0685..fbbf4931 100644
--- a/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengInsertTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengInsertTest.cs
@@ -177,6 +177,11 @@ INTO ""TB_TOPIC_INSERT""(""CLICKS"") VALUES(900)
Assert.Equal(1, insert.AppendData(items.First()).ExecuteAffrows());
Assert.Equal(10, insert.AppendData(items).ExecuteAffrows());
+
+ Assert.Equal(10, g.dameng.Select().Limit(10).InsertInto(null, a => new Topic
+ {
+ Title = a.Title
+ }));
}
[Fact]
public void ExecuteIdentity()
diff --git a/FreeSql.Tests/FreeSql.Tests/Firebird/Curd/FirebirdInsertTest.cs b/FreeSql.Tests/FreeSql.Tests/Firebird/Curd/FirebirdInsertTest.cs
index 0f14a9b8..1d7d3161 100644
--- a/FreeSql.Tests/FreeSql.Tests/Firebird/Curd/FirebirdInsertTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Firebird/Curd/FirebirdInsertTest.cs
@@ -215,6 +215,11 @@ UNION ALL
Assert.Equal(1, insert.AppendData(items.First()).ExecuteAffrows());
Assert.Equal(10, insert.NoneParameter().AppendData(items).ExecuteAffrows());
+
+ Assert.Equal(10, g.firebird.Select().Limit(10).InsertInto(null, a => new Topic
+ {
+ Title = a.Title
+ }));
}
[Fact]
public void ExecuteIdentity()
diff --git a/FreeSql.Tests/FreeSql.Tests/KingbaseES/Curd/KingbaseESInsertTest.cs b/FreeSql.Tests/FreeSql.Tests/KingbaseES/Curd/KingbaseESInsertTest.cs
index bf4411ca..eb400cf0 100644
--- a/FreeSql.Tests/FreeSql.Tests/KingbaseES/Curd/KingbaseESInsertTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/KingbaseES/Curd/KingbaseESInsertTest.cs
@@ -89,6 +89,11 @@ namespace FreeSql.Tests.KingbaseES
Assert.Equal(1, insert.AppendData(items.First()).ExecuteAffrows());
Assert.Equal(10, insert.AppendData(items).ExecuteAffrows());
+
+ Assert.Equal(10, g.kingbaseES.Select().Limit(10).InsertInto(null, a => new Topic
+ {
+ Title = a.Title
+ }));
}
[Fact]
public void ExecuteIdentity()
diff --git a/FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessInsertTest.cs b/FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessInsertTest.cs
index c2e44197..3e8fcf0e 100644
--- a/FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessInsertTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessInsertTest.cs
@@ -92,6 +92,11 @@ namespace FreeSql.Tests.MsAccess
//items = Enumerable.Range(0, 9989).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList();
//Assert.Equal(9989, g.msaccess.Insert(items).ExecuteAffrows());
+
+ Assert.Equal(10, g.msaccess.Select().Limit(10).InsertInto(null, a => new Topic
+ {
+ Title = a.Title
+ }));
}
[Fact]
public void ExecuteIdentity()
diff --git a/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlInsertTest.cs b/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlInsertTest.cs
index 3f4ee371..ff75484b 100644
--- a/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlInsertTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlInsertTest.cs
@@ -106,6 +106,11 @@ namespace FreeSql.Tests.MySql
Assert.Equal(1, g.mysql.Insert().AppendData(new TestEnumInsertTb { type = TestEnumInserTbType.sum211 }).ExecuteAffrows());
Assert.Equal(1, g.mysql.Insert().AppendData(new TestEnumInsertTb { type = TestEnumInserTbType.sum211 }).NoneParameter().ExecuteAffrows());
+
+ Assert.Equal(10, g.mysql.Select().Limit(10).InsertInto(null, a => new Topic
+ {
+ Title = a.Title
+ }));
}
[Fact]
public void ExecuteIdentity()
diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleInsertTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleInsertTest.cs
index 6f0bff0f..64315042 100644
--- a/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleInsertTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleInsertTest.cs
@@ -177,6 +177,11 @@ INTO ""TB_TOPIC_INSERT""(""CLICKS"") VALUES(:Clicks_9)
Assert.Equal(1, insert.AppendData(items.First()).ExecuteAffrows());
Assert.Equal(10, insert.AppendData(items).ExecuteAffrows());
+
+ Assert.Equal(10, g.oracle.Select().Limit(10).InsertInto(null, a => new Topic
+ {
+ Title = a.Title
+ }));
}
[Fact]
public void ExecuteIdentity()
diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLInsertTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLInsertTest.cs
index 3617db5c..0803513d 100644
--- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLInsertTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLInsertTest.cs
@@ -89,6 +89,11 @@ namespace FreeSql.Tests.PostgreSQL
Assert.Equal(1, insert.AppendData(items.First()).ExecuteAffrows());
Assert.Equal(10, insert.AppendData(items).ExecuteAffrows());
+
+ Assert.Equal(10, g.pgsql.Select().Limit(10).InsertInto(null, a => new Topic
+ {
+ Title = a.Title
+ }));
}
[Fact]
public void ExecuteIdentity()
diff --git a/FreeSql.Tests/FreeSql.Tests/ShenTong/Curd/ShenTongInsertTest.cs b/FreeSql.Tests/FreeSql.Tests/ShenTong/Curd/ShenTongInsertTest.cs
index d036d099..e771cee9 100644
--- a/FreeSql.Tests/FreeSql.Tests/ShenTong/Curd/ShenTongInsertTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/ShenTong/Curd/ShenTongInsertTest.cs
@@ -89,6 +89,11 @@ namespace FreeSql.Tests.ShenTong
Assert.Equal(1, insert.AppendData(items.First()).ExecuteAffrows());
Assert.Equal(10, insert.AppendData(items).ExecuteAffrows());
+
+ Assert.Equal(10, g.shentong.Select().Limit(10).InsertInto(null, a => new Topic
+ {
+ Title = a.Title
+ }));
}
[Fact]
public void ExecuteIdentity()
diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerInsertTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerInsertTest.cs
index 20f73c87..7122c4fe 100644
--- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerInsertTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerInsertTest.cs
@@ -100,6 +100,11 @@ namespace FreeSql.Tests.SqlServer
Assert.Equal(1, insert.AppendData(items.First()).ExecuteAffrows());
Assert.Equal(10, insert.AppendData(items).NoneParameter().ExecuteAffrows());
+ Assert.Equal(10, g.sqlserver.Select().Limit(10).InsertInto(null, a => new Topic
+ {
+ Title = a.Title
+ }));
+
//items = Enumerable.Range(0, 9989).Select(a => new Topic { Title = "newtitle" + a, CreateTime = DateTime.Now }).ToList();
//Assert.Equal(9989, g.sqlserver.Insert(items).ExecuteAffrows());
diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteInsertTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteInsertTest.cs
index ac532f9d..d3579aa0 100644
--- a/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteInsertTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteInsertTest.cs
@@ -89,6 +89,11 @@ namespace FreeSql.Tests.Sqlite
Assert.Equal(1, insert.AppendData(items.First()).ExecuteAffrows());
Assert.Equal(10, insert.AppendData(items).ExecuteAffrows());
+
+ Assert.Equal(10, g.sqlite.Select().Limit(10).InsertInto(null, a => new Topic
+ {
+ Title = a.Title
+ }));
}
[Fact]
public void ExecuteIdentity()
diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml
index 8fd7f738..e984b6cb 100644
--- a/FreeSql/FreeSql.xml
+++ b/FreeSql/FreeSql.xml
@@ -2046,6 +2046,15 @@
lambda表达式
+
+
+ 将查询转换为 INSERT INTO tableName SELECT ... FROM t 执行插入
+
+
+ 指定插入的表名,若为 null 则使用 TTargetEntity 实体表名
+ 选择列
+ 返回影响的行数
+
执行SQL查询,返回 DataTable
@@ -2997,154 +3006,6 @@
-
-
- 测试数据库是否连接正确,本方法执行如下命令:
- MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1
- Oracle: SELECT 1 FROM dual
-
- 命令超时设置(秒)
- true: 成功, false: 失败
-
-
-
- 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
-
-
-
-
-
-
-
-
- 查询,ExecuteReaderAsync(dr => {}, "select * from user where age > ?age", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
- 查询
-
-
-
-
-
-
- 查询,ExecuteArrayAsync("select * from user where age > ?age", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
- 查询
-
-
-
-
-
-
- 查询,ExecuteDataSetAsync("select * from user where age > ?age; select 2", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
- 查询
-
-
-
-
-
-
- 查询,ExecuteDataTableAsync("select * from user where age > ?age", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
- 在【主库】执行
-
-
-
-
-
-
-
- 在【主库】执行,ExecuteNonQueryAsync("delete from user where age > ?age", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
- 在【主库】执行
-
-
-
-
-
-
-
- 在【主库】执行,ExecuteScalarAsync("select 1 from user where age > ?age", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
- 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > ?age", new SqlParameter { ParameterName = "age", Value = 25 })
-
-
-
-
-
-
-
-
-
- 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > ?age", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
-
-
- 执行SQL返回对象集合,Query<User>("select * from user where age > ?age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 })
-
-
-
-
-
-
-
-
-
- 执行SQL返回对象集合,Query<User, Address>("select * from user where age > ?age; select * from address", new { age = 25 })
- 提示:parms 参数还可以传 Dictionary<string, object>
-
-
-
-
-
-
可自定义解析表达式
@@ -3951,12 +3812,6 @@
超时
-
-
- 获取资源
-
-
-
使用完毕后,归还资源
@@ -4027,12 +3882,6 @@
资源对象
-
-
- 从对象池获取对象成功的时候触发,通过该方法统计或初始化对象
-
- 资源对象
-
归还对象给对象池的时候触发
@@ -4643,3 +4492,190 @@
+essions.Expression{System.Func{``0,``1,``2,``3,``4,System.Boolean}},System.Linq.Expressions.Expression{System.Func{``0,``1,``2,``3,``4,System.Boolean}})">
+
+ 使用 and 拼接两个 lambda 表达式
+
+
+
+
+
+ 使用 and 拼接两个 lambda 表达式
+
+
+ true 时生效
+
+
+
+
+
+ 使用 or 拼接两个 lambda 表达式
+
+
+
+
+
+ 使用 or 拼接两个 lambda 表达式
+
+
+ true 时生效
+
+
+
+
+
+ 将 lambda 表达式取反
+
+
+ true 时生效
+
+
+
+
+ 生成类似Mongodb的ObjectId有序、不重复Guid
+
+
+
+
+
+ 插入数据
+
+
+
+
+
+
+ 插入数据,传入实体
+
+
+
+
+
+
+
+ 插入数据,传入实体数组
+
+
+
+
+
+
+
+ 插入数据,传入实体集合
+
+
+
+
+
+
+
+ 插入数据,传入实体集合
+
+
+
+
+
+
+
+ 插入或更新数据,此功能依赖数据库特性(低版本可能不支持),参考如下:
+ MySql 5.6+: on duplicate key update
+ PostgreSQL 9.4+: on conflict do update
+ SqlServer 2008+: merge into
+ Oracle 11+: merge into
+ Sqlite: replace into
+ 达梦: merge into
+ 人大金仓:on conflict do update
+ 神通:merge into
+ MsAccess:不支持
+ 注意区别:FreeSql.Repository 仓储也有 InsertOrUpdate 方法(不依赖数据库特性)
+
+
+
+
+
+
+ 修改数据
+
+
+
+
+
+
+ 修改数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
+
+
+ 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合
+
+
+
+
+ 查询数据
+
+
+
+
+
+
+ 查询数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
+
+
+ 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合
+
+
+
+
+ 删除数据
+
+
+
+
+
+
+ 删除数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
+
+
+ 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合
+
+
+
+
+ 开启事务(不支持异步)
+ v1.5.0 关闭了线程事务超时自动提交的机制
+
+ 事务体 () => {}
+
+
+
+ 开启事务(不支持异步)
+ v1.5.0 关闭了线程事务超时自动提交的机制
+
+
+ 事务体 () => {}
+
+
+
+ 数据库访问对象
+
+
+
+
+ 所有拦截方法都在这里
+
+
+
+
+ CodeFirst 模式开发相关方法
+
+
+
+
+ DbFirst 模式开发相关方法
+
+
+
+
+ 全局过滤设置,可默认附加为 Select/Update/Delete 条件
+
+
+
+
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect1.cs b/FreeSql/Interface/Curd/ISelect/ISelect1.cs
index b6cef93a..b5e061f5 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect1.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect1.cs
@@ -15,6 +15,7 @@ namespace FreeSql
#else
Task AnyAsync(Expression> exp);
+ Task InsertIntoAsync(string tableName, Expression> select) where TTargetEntity : class;
Task ToDataTableAsync(Expression> select);
Task> ToListAsync(Expression> select);
Task> ToListAsync();
@@ -38,6 +39,15 @@ namespace FreeSql
///
bool Any(Expression> exp);
+ ///
+ /// 将查询转换为 INSERT INTO tableName SELECT ... FROM t 执行插入
+ ///
+ ///
+ /// 指定插入的表名,若为 null 则使用 TTargetEntity 实体表名
+ /// 选择列
+ /// 返回影响的行数
+ int InsertInto(string tableName, Expression> select) where TTargetEntity : class;
+
///
/// 执行SQL查询,返回 DataTable
///
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect10.cs b/FreeSql/Interface/Curd/ISelect/ISelect10.cs
index f35462e6..4b0a2862 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect10.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect10.cs
@@ -13,6 +13,7 @@ namespace FreeSql
#if net40
#else
Task AnyAsync(Expression> exp);
+ Task InsertIntoAsync(string tableName, Expression> select) where TTargetEntity : class;
Task ToDataTableAsync(Expression> select);
Task> ToListAsync(Expression> select);
Task> ToListAsync();
@@ -29,6 +30,7 @@ namespace FreeSql
#endif
bool Any(Expression> exp);
+ int InsertInto(string tableName, Expression> select) where TTargetEntity : class;
DataTable ToDataTable(Expression> select);
List ToList(Expression> select);
List ToList();
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect11.cs b/FreeSql/Interface/Curd/ISelect/ISelect11.cs
index 57e19df4..ef22e1a8 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect11.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect11.cs
@@ -13,6 +13,7 @@ namespace FreeSql
#if net40
#else
Task AnyAsync(Expression> exp);
+ Task InsertIntoAsync(string tableName, Expression> select) where TTargetEntity : class;
Task ToDataTableAsync(Expression> select);
Task> ToListAsync(Expression> select);
Task> ToListAsync();
@@ -29,6 +30,7 @@ namespace FreeSql
#endif
bool Any(Expression> exp);
+ int InsertInto(string tableName, Expression> select) where TTargetEntity : class;
DataTable ToDataTable(Expression> select);
List ToList(Expression> select);
List ToList();
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect12.cs b/FreeSql/Interface/Curd/ISelect/ISelect12.cs
index 05422fa9..c41853a9 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect12.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect12.cs
@@ -13,6 +13,7 @@ namespace FreeSql
#if net40
#else
Task AnyAsync(Expression> exp);
+ Task InsertIntoAsync(string tableName, Expression> select) where TTargetEntity : class;
Task ToDataTableAsync(Expression> select);
Task> ToListAsync(Expression> select);
Task> ToListAsync();
@@ -29,6 +30,7 @@ namespace FreeSql
#endif
bool Any(Expression> exp);
+ int InsertInto(string tableName, Expression> select) where TTargetEntity : class;
DataTable ToDataTable(Expression> select);
List ToList(Expression> select);
List ToList();
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect13.cs b/FreeSql/Interface/Curd/ISelect/ISelect13.cs
index fb87f33a..b1a5f708 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect13.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect13.cs
@@ -13,6 +13,7 @@ namespace FreeSql
#if net40
#else
Task AnyAsync(Expression> exp);
+ Task InsertIntoAsync(string tableName, Expression> select) where TTargetEntity : class;
Task ToDataTableAsync(Expression> select);
Task> ToListAsync(Expression> select);
Task> ToListAsync();
@@ -29,6 +30,7 @@ namespace FreeSql
#endif
bool Any(Expression> exp);
+ int InsertInto(string tableName, Expression> select) where TTargetEntity : class;
DataTable ToDataTable(Expression> select);
List ToList(Expression> select);
List ToList();
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect14.cs b/FreeSql/Interface/Curd/ISelect/ISelect14.cs
index 786fa125..42d8dbec 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect14.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect14.cs
@@ -13,6 +13,7 @@ namespace FreeSql
#if net40
#else
Task AnyAsync(Expression> exp);
+ Task InsertIntoAsync(string tableName, Expression> select) where TTargetEntity : class;
Task ToDataTableAsync(Expression> select);
Task> ToListAsync(Expression> select);
Task> ToListAsync();
@@ -29,6 +30,7 @@ namespace FreeSql
#endif
bool Any(Expression> exp);
+ int InsertInto(string tableName, Expression> select) where TTargetEntity : class;
DataTable ToDataTable(Expression> select);
List ToList(Expression> select);
List ToList();
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect15.cs b/FreeSql/Interface/Curd/ISelect/ISelect15.cs
index 9bdd3238..a0eaf778 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect15.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect15.cs
@@ -13,6 +13,7 @@ namespace FreeSql
#if net40
#else
Task AnyAsync(Expression> exp);
+ Task InsertIntoAsync(string tableName, Expression> select) where TTargetEntity : class;
Task ToDataTableAsync(Expression> select);
Task> ToListAsync(Expression> select);
Task> ToListAsync();
@@ -29,6 +30,7 @@ namespace FreeSql
#endif
bool Any(Expression> exp);
+ int InsertInto(string tableName, Expression> select) where TTargetEntity : class;
DataTable ToDataTable(Expression> select);
List ToList(Expression> select);
List ToList();
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect16.cs b/FreeSql/Interface/Curd/ISelect/ISelect16.cs
index 7d1651ba..2261ce16 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect16.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect16.cs
@@ -13,6 +13,7 @@ namespace FreeSql
#if net40
#else
Task AnyAsync(Expression> exp);
+ Task InsertIntoAsync(string tableName, Expression> select) where TTargetEntity : class;
Task ToDataTableAsync(Expression> select);
Task> ToListAsync(Expression> select);
Task> ToListAsync();
@@ -29,6 +30,7 @@ namespace FreeSql
#endif
bool Any(Expression> exp);
+ int InsertInto(string tableName, Expression> select) where TTargetEntity : class;
DataTable ToDataTable(Expression> select);
List ToList(Expression> select);
List ToList();
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect2.cs b/FreeSql/Interface/Curd/ISelect/ISelect2.cs
index a6aeaa28..0302108f 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect2.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect2.cs
@@ -13,6 +13,7 @@ namespace FreeSql
#if net40
#else
Task AnyAsync(Expression> exp);
+ Task InsertIntoAsync(string tableName, Expression> select) where TTargetEntity : class;
Task ToDataTableAsync(Expression> select);
Task> ToListAsync(Expression> select);
Task> ToListAsync();
@@ -29,6 +30,7 @@ namespace FreeSql
#endif
bool Any(Expression> exp);
+ int InsertInto(string tableName, Expression> select) where TTargetEntity : class;
DataTable ToDataTable(Expression> select);
List ToList(Expression> select);
List ToList();
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect3.cs b/FreeSql/Interface/Curd/ISelect/ISelect3.cs
index 35a6212a..7343cabe 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect3.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect3.cs
@@ -13,6 +13,7 @@ namespace FreeSql
#if net40
#else
Task AnyAsync(Expression> exp);
+ Task InsertIntoAsync(string tableName, Expression> select) where TTargetEntity : class;
Task ToDataTableAsync(Expression> select);
Task> ToListAsync(Expression> select);
Task> ToListAsync();
@@ -29,6 +30,7 @@ namespace FreeSql
#endif
bool Any(Expression> exp);
+ int InsertInto(string tableName, Expression> select) where TTargetEntity : class;
DataTable ToDataTable(Expression> select);
List ToList(Expression> select);
List ToList();
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect4.cs b/FreeSql/Interface/Curd/ISelect/ISelect4.cs
index 93c6f809..622351c8 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect4.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect4.cs
@@ -13,6 +13,7 @@ namespace FreeSql
#if net40
#else
Task AnyAsync(Expression> exp);
+ Task InsertIntoAsync(string tableName, Expression> select) where TTargetEntity : class;
Task ToDataTableAsync(Expression> select);
Task> ToListAsync(Expression> select);
Task> ToListAsync();
@@ -29,6 +30,7 @@ namespace FreeSql
#endif
bool Any(Expression> exp);
+ int InsertInto