diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index d9f91124..dc0203b8 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -110,13 +110,6 @@
清空状态数据
-
-
- 根据 lambda 条件删除数据
-
-
-
-
添加
diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs
index 93ce4d45..235f8eb4 100644
--- a/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs
+++ b/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs
@@ -44,13 +44,13 @@ namespace FreeSql.Tests
// fsql.Select().ToList();
//}
- //var testByte = new TestByte { pic = File.ReadAllBytes(@"C:\Users\28810\Desktop\github\FreeSql\functions06.png") };
+ //var testByte = new TestByte { pic = File.ReadAllBytes(@"C:\Users\28810\Desktop\71500003-0ad69400-289e-11ea-85cb-36a54f52ebc0.png") };
//var sql = g.sqlserver.Insert(testByte).NoneParameter().ToSql();
- //g.sqlserver.Insert(testByte).ExecuteAffrows();
+ //g.sqlserver.Insert(testByte).NoneParameter().ExecuteAffrows();
//var getTestByte = g.sqlserver.Select(testByte).First();
- //File.WriteAllBytes(@"C:\Users\28810\Desktop\github\FreeSql\functions06_write.png", getTestByte.pic);
+ //File.WriteAllBytes(@"C:\Users\28810\Desktop\71500003-0ad69400-289e-11ea-85cb-36a54f52ebc0_write.png", getTestByte.pic);
}
class TestByte
diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml
index 13ec6385..d2213da2 100644
--- a/FreeSql/FreeSql.xml
+++ b/FreeSql/FreeSql.xml
@@ -2224,137 +2224,6 @@
-
-
- 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
-
-
-
-
-
-
-
-
- 查询,ExecuteReaderAsync(dr => {}, "select * from user where age > @age", new { age = 25 })
-
-
-
-
-
-
- 查询
-
-
-
-
-
-
- 查询,ExecuteArrayAsync("select * from user where age > @age", new { age = 25 })
-
-
-
-
-
-
-
- 查询
-
-
-
-
-
-
- 查询,ExecuteDataSetAsync("select * from user where age > @age; select 2", new { age = 25 })
-
-
-
-
-
-
-
- 查询
-
-
-
-
-
-
- 查询,ExecuteDataTableAsync("select * from user where age > @age", new { age = 25 })
-
-
-
-
-
-
-
- 在【主库】执行
-
-
-
-
-
-
-
- 在【主库】执行,ExecuteNonQueryAsync("delete from user where age > @age", new { age = 25 })
-
-
-
-
-
-
-
- 在【主库】执行
-
-
-
-
-
-
-
- 在【主库】执行,ExecuteScalarAsync("select 1 from user where age > @age", new { age = 25 })
-
-
-
-
-
-
-
- 执行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 })
-
-
-
-
-
-
-
-
- 执行SQL返回对象集合,Query<User>("select * from user where age > @age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 })
-
-
-
-
-
-
-
-
-
- 执行SQL返回对象集合,Query<User>("select * from user where age > @age; select * from address", new { age = 25 })
-
-
-
-
-
-
可自定义解析表达式
@@ -3133,3 +3002,160 @@
+unc{``0,System.Boolean}},System.Boolean,System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})">
+
+ 使用 or 拼接两个 lambda 表达式
+
+
+
+ true 时生效
+
+
+
+
+
+ 将 lambda 表达式取反
+
+
+
+ true 时生效
+
+
+
+
+ 生成类似Mongodb的ObjectId有序、不重复Guid
+
+
+
+
+
+ 插入数据
+
+
+
+
+
+
+ 插入数据,传入实体
+
+
+
+
+
+
+
+ 插入数据,传入实体数组
+
+
+
+
+
+
+
+ 插入数据,传入实体集合
+
+
+
+
+
+
+
+ 插入数据,传入实体集合
+
+
+
+
+
+
+
+ 修改数据
+
+
+
+
+
+
+ 修改数据,传入动态对象如:主键值 | 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}
+
+
+ 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合
+
+
+
+
+ 开启事务(不支持异步),60秒未执行完成(可能)被其他线程事务自动提交
+
+ 事务体 () => {}
+
+
+
+ 开启事务(不支持异步)
+
+ 超时,未执行完成(可能)被其他线程事务自动提交
+ 事务体 () => {}
+
+
+
+ 开启事务(不支持异步)
+
+
+ 事务体 () => {}
+ 超时,未执行完成(可能)被其他线程事务自动提交
+
+
+
+ 数据库访问对象
+
+
+
+
+ 所有拦截方法都在这里
+
+
+
+
+ CodeFirst 模式开发相关方法
+
+
+
+
+ DbFirst 模式开发相关方法
+
+
+
+
+ 全局过滤设置,可默认附加为 Select/Update/Delete 条件
+
+
+
+
diff --git a/Providers/FreeSql.Provider.MsAccess/MsAccessUtils.cs b/Providers/FreeSql.Provider.MsAccess/MsAccessUtils.cs
index c52df2e6..b0798d2a 100644
--- a/Providers/FreeSql.Provider.MsAccess/MsAccessUtils.cs
+++ b/Providers/FreeSql.Provider.MsAccess/MsAccessUtils.cs
@@ -85,10 +85,7 @@ namespace FreeSql.MsAccess
var bytes = value as byte[];
var sb = new StringBuilder().Append("0x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.ToString();
}
else if (type == typeof(TimeSpan) || type == typeof(TimeSpan?))
diff --git a/Providers/FreeSql.Provider.MySql/MySqlUtils.cs b/Providers/FreeSql.Provider.MySql/MySqlUtils.cs
index 15d4dec4..4e5ea4b0 100644
--- a/Providers/FreeSql.Provider.MySql/MySqlUtils.cs
+++ b/Providers/FreeSql.Provider.MySql/MySqlUtils.cs
@@ -126,10 +126,7 @@ namespace FreeSql.MySql
var bytes = value as byte[];
var sb = new StringBuilder().Append("0x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.ToString(); //val = Encoding.UTF8.GetString(val as byte[]);
}
else if (type == typeof(TimeSpan) || type == typeof(TimeSpan?))
diff --git a/Providers/FreeSql.Provider.MySqlConnector/MySqlConnectorUtils.cs b/Providers/FreeSql.Provider.MySqlConnector/MySqlConnectorUtils.cs
index d4e9f674..202eb9f1 100644
--- a/Providers/FreeSql.Provider.MySqlConnector/MySqlConnectorUtils.cs
+++ b/Providers/FreeSql.Provider.MySqlConnector/MySqlConnectorUtils.cs
@@ -134,10 +134,7 @@ namespace FreeSql.MySql
var bytes = value as byte[];
var sb = new StringBuilder().Append("0x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.ToString(); //val = Encoding.UTF8.GetString(val as byte[]);
}
else if (type == typeof(TimeSpan) || type == typeof(TimeSpan?))
diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs
index 5d86bb05..065081d9 100644
--- a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengUtils.cs
@@ -101,10 +101,7 @@ namespace FreeSql.Odbc.Dameng
var bytes = value as byte[];
var sb = new StringBuilder().Append("rawtohex('0x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.Append("')").ToString();
}
return FormatSql("{0}", value, 1);
diff --git a/Providers/FreeSql.Provider.Odbc/Default/OdbcAdapter.cs b/Providers/FreeSql.Provider.Odbc/Default/OdbcAdapter.cs
index ddddb518..9ac1d070 100644
--- a/Providers/FreeSql.Provider.Odbc/Default/OdbcAdapter.cs
+++ b/Providers/FreeSql.Provider.Odbc/Default/OdbcAdapter.cs
@@ -58,10 +58,7 @@ namespace FreeSql.Odbc.Default
var bytes = value as byte[];
var sb = new StringBuilder().Append("0x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.ToString();
}
diff --git a/Providers/FreeSql.Provider.Odbc/GBase/__OdbcGBaseUtils.cs b/Providers/FreeSql.Provider.Odbc/GBase/__OdbcGBaseUtils.cs
index ee39daff..3382ae3e 100644
--- a/Providers/FreeSql.Provider.Odbc/GBase/__OdbcGBaseUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/GBase/__OdbcGBaseUtils.cs
@@ -129,10 +129,7 @@ namespace FreeSql.Odbc.GBase
var bytes = value as byte[];
var sb = new StringBuilder().Append("'\\x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.Append("'").ToString(); //val = Encoding.UTF8.GetString(val as byte[]);
}
else if (type2 == typeof(TimeSpan) || type2 == typeof(TimeSpan?))
diff --git a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs
index 7222f2e2..20917791 100644
--- a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlUtils.cs
@@ -97,10 +97,7 @@ namespace FreeSql.Odbc.MySql
var bytes = value as byte[];
var sb = new StringBuilder().Append("0x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.ToString(); //val = Encoding.UTF8.GetString(val as byte[]);
}
else if (type == typeof(TimeSpan) || type == typeof(TimeSpan?))
diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs
index e851589e..5880ea5a 100644
--- a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleUtils.cs
@@ -101,10 +101,7 @@ namespace FreeSql.Odbc.Oracle
var bytes = value as byte[];
var sb = new StringBuilder().Append("rawtohex('0x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.Append("')").ToString();
}
return FormatSql("{0}", value, 1);
diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLUtils.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLUtils.cs
index 365f9eab..5d2559ce 100644
--- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLUtils.cs
@@ -129,10 +129,7 @@ namespace FreeSql.Odbc.PostgreSQL
var bytes = value as byte[];
var sb = new StringBuilder().Append("'\\x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.Append("'").ToString(); //val = Encoding.UTF8.GetString(val as byte[]);
}
else if (type2 == typeof(TimeSpan) || type2 == typeof(TimeSpan?))
diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerUtils.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerUtils.cs
index bdd06913..612facff 100644
--- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerUtils.cs
+++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerUtils.cs
@@ -88,10 +88,7 @@ namespace FreeSql.Odbc.SqlServer
var bytes = value as byte[];
var sb = new StringBuilder().Append("0x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.ToString();
}
else if (type == typeof(TimeSpan) || type == typeof(TimeSpan?))
diff --git a/Providers/FreeSql.Provider.Oracle/OracleUtils.cs b/Providers/FreeSql.Provider.Oracle/OracleUtils.cs
index 570c4c0f..64388b4a 100644
--- a/Providers/FreeSql.Provider.Oracle/OracleUtils.cs
+++ b/Providers/FreeSql.Provider.Oracle/OracleUtils.cs
@@ -96,10 +96,7 @@ namespace FreeSql.Oracle
var bytes = value as byte[];
var sb = new StringBuilder().Append("rawtohex('0x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.Append("')").ToString();
}
return FormatSql("{0}", value, 1);
diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLUtils.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLUtils.cs
index a0c015f1..0910d9cc 100644
--- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLUtils.cs
+++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLUtils.cs
@@ -161,10 +161,7 @@ namespace FreeSql.PostgreSQL
var bytes = value as byte[];
var sb = new StringBuilder().Append("'\\x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.Append("'").ToString(); //val = Encoding.UTF8.GetString(val as byte[]);
}
else if (type2 == typeof(TimeSpan) || type2 == typeof(TimeSpan?))
diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerUtils.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerUtils.cs
index bf66c1b1..9d76798e 100644
--- a/Providers/FreeSql.Provider.SqlServer/SqlServerUtils.cs
+++ b/Providers/FreeSql.Provider.SqlServer/SqlServerUtils.cs
@@ -99,10 +99,7 @@ namespace FreeSql.SqlServer
var bytes = value as byte[];
var sb = new StringBuilder().Append("0x");
foreach (var vc in bytes)
- {
- if (vc < 10) sb.Append("0");
- sb.Append(vc.ToString("X"));
- }
+ sb.Append(vc.ToString("X").PadLeft(2, '0'));
return sb.ToString();
}
else if (type == typeof(TimeSpan) || type == typeof(TimeSpan?))