diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index ddd18378..28fdb213 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -110,13 +110,6 @@ 清空状态数据 - - - 根据 lambda 条件删除数据 - - - - 添加 @@ -211,15 +204,6 @@ - - - 批量注入 Repository,可以参考代码自行调整 - - - - - - 动态Type,在使用 Repository<object> 后使用本方法,指定实体类型 diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs index 68b9de63..baf47d01 100644 --- a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs @@ -11,6 +11,51 @@ namespace FreeSql.Tests.Oracle { public class OracleCodeFirstTest { + [Fact] + public void NClob_StringLength_1() + { + var str1 = string.Join(",", Enumerable.Range(0, 10000).Select(a => "й")); + + var item1 = new TS_NCLB02 { Data = str1 }; + Assert.Equal(1, g.oracle.Insert(item1).ExecuteAffrows()); + + var item2 = g.oracle.Select().Where(a => a.Id == item1.Id).First(); + Assert.Equal(str1, item2.Data); + + //NoneParameter + item1 = new TS_NCLB02 { Data = str1 }; + Assert.Throws(() => g.oracle.Insert(item1).NoneParameter().ExecuteAffrows()); + //Oracle.ManagedDataAccess.Client.OracleException:ORA-01704: ַ̫ + } + class TS_NCLB02 + { + public Guid Id { get; set; } + [Column(StringLength = - 1)] + public string Data { get; set; } + } + + [Fact] + public void NClob() + { + var str1 = string.Join(",", Enumerable.Range(0, 10000).Select(a => "й")); + + var item1 = new TS_NCLB01 { Data = str1 }; + Assert.Equal(1, g.oracle.Insert(item1).ExecuteAffrows()); + + var item2 = g.oracle.Select().Where(a => a.Id == item1.Id).First(); + Assert.Equal(str1, item2.Data); + + //NoneParameter + item1 = new TS_NCLB01 { Data = str1 }; + Assert.Throws(() => g.oracle.Insert(item1).NoneParameter().ExecuteAffrows()); + //Oracle.ManagedDataAccess.Client.OracleException:ORA-01704: ַ̫ + } + class TS_NCLB01 + { + public Guid Id { get; set; } + [Column(DbType = "nclob")] + public string Data { get; set; } + } [Fact] public void Clob() { diff --git a/FreeSql/Internal/UtilsExpressionTree.cs b/FreeSql/Internal/UtilsExpressionTree.cs index efdb4a8a..c77baea9 100644 --- a/FreeSql/Internal/UtilsExpressionTree.cs +++ b/FreeSql/Internal/UtilsExpressionTree.cs @@ -223,6 +223,9 @@ namespace FreeSql.Internal else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})"); break; case DataType.Oracle: + if (strlen < 0) colattr.DbType = "NCLOB"; //v1.3.2+ https://github.com/dotnetcore/FreeSql/issues/259 + else colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1({strlen})"); + break; case DataType.OdbcOracle: case DataType.OdbcDameng: if (strlen < 0) colattr.DbType = Regex.Replace(colattr.DbType, charPatten, $"$1(4000)");