diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleUpdateTest.cs index f71c827d..be5869d3 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleUpdateTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleUpdateTest.cs @@ -53,6 +53,17 @@ namespace FreeSql.Tests.Odbc.Oracle new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" }, new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" } }).NoneParameter().ToSql().Replace("\r\n", ""); + + var uuids = new[] + { + new tssi01{tint = 1, title = "title01"}, + new tssi01{tint = 2, title = "title02"}, + new tssi01{tint = 3, title = "title03"}, + }; + g.oracle.Insert(uuids).ExecuteAffrows(); + g.oracle.Update().SetSource(uuids).ExecuteAffrows(); + + var tssi01tb = g.oracle.DbFirst.GetTableByName("tssi01"); } public class ts_source_mpk { @@ -71,7 +82,7 @@ namespace FreeSql.Tests.Odbc.Oracle } public class tssi01 { - [Column(CanUpdate = false)] + [Column(CanUpdate = false, DbType = "nvarchar2(36)")] public Guid id { get; set; } public int tint { get; set; } public string title { get; set; } diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleUpdateTest.cs index 13abb3ef..da976c0d 100644 --- a/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleUpdateTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleUpdateTest.cs @@ -53,6 +53,17 @@ namespace FreeSql.Tests.Oracle new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" }, new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" } }).NoneParameter().ToSql().Replace("\r\n", ""); + + var uuids = new[] + { + new tssi01{tint = 1, title = "title01"}, + new tssi01{tint = 2, title = "title02"}, + new tssi01{tint = 3, title = "title03"}, + }; + g.oracle.Insert(uuids).ExecuteAffrows(); + g.oracle.Update().SetSource(uuids).ExecuteAffrows(); + + var tssi01tb = g.oracle.DbFirst.GetTableByName("tssi01"); } public class ts_source_mpk { @@ -71,7 +82,7 @@ namespace FreeSql.Tests.Oracle } public class tssi01 { - [Column(CanUpdate = false)] + [Column(CanUpdate = false, DbType = "nvarchar2(36)")] public Guid id { get; set; } public int tint { get; set; } public string title { get; set; } diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index b4918bb3..36068d41 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -2594,6 +2594,145 @@ + + + 查询,若使用读写分离,查询【从库】条件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> + + + + + + 可自定义解析表达式 @@ -3279,6 +3418,12 @@ 超时 + + + 获取资源 + + + 使用完毕后,归还资源 @@ -3349,6 +3494,12 @@ 资源对象 + + + 从对象池获取对象成功的时候触发,通过该方法统计或初始化对象 + + 资源对象 + 归还对象给对象池的时候触发 diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleUpdate.cs b/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleUpdate.cs index 9e52f3c7..e8332f8d 100644 --- a/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleUpdate.cs +++ b/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleUpdate.cs @@ -50,7 +50,9 @@ namespace FreeSql.Odbc.Oracle { if (_table.Primarys.Length == 1) { - sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys.First().GetMapValue(d))); + if (_table.Primarys[0].Attribute.DbType.Contains("NVARCHAR2")) + sb.Append("N"); + sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys[0].GetMapValue(d))); return; } sb.Append("("); diff --git a/Providers/FreeSql.Provider.Oracle/Curd/OracleUpdate.cs b/Providers/FreeSql.Provider.Oracle/Curd/OracleUpdate.cs index 0b65e0fb..02c0ac49 100644 --- a/Providers/FreeSql.Provider.Oracle/Curd/OracleUpdate.cs +++ b/Providers/FreeSql.Provider.Oracle/Curd/OracleUpdate.cs @@ -50,7 +50,9 @@ namespace FreeSql.Oracle.Curd { if (_table.Primarys.Length == 1) { - sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys.First().GetMapValue(d))); + if (_table.Primarys[0].Attribute.DbType.Contains("NVARCHAR2")) + sb.Append("N"); + sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys[0].GetMapValue(d))); return; } sb.Append("(");