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