From 7c55f09d47f5cd74f9f05cd980df8adc39a0d50f Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Wed, 8 Apr 2020 14:19:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20Unit=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql.DbContext/FreeSql.DbContext.xml | 16 ++++ .../Dameng/DamengCodeFirstTest.cs | 86 +++++++++---------- .../Oracle/OracleCodeFirstTest.cs | 53 ++++++++++++ .../FreeSql.Tests.Provider.Odbc/g.cs | 12 +-- .../Oracle/OracleCodeFirstTest.cs | 54 ++++++++++++ FreeSql.Tests/FreeSql.Tests/UnitTest3.cs | 2 +- FreeSql.Tests/FreeSql.Tests/g.cs | 4 +- .../Special/OraclePrimaryKeyNameAttribute.cs | 1 + 8 files changed, 176 insertions(+), 52 deletions(-) diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 63db6c75..eacd506b 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -121,6 +121,13 @@ 清空状态数据 + + + 根据 lambda 条件删除数据 + + + + 添加 @@ -215,6 +222,15 @@ + + + 批量注入 Repository,可以参考代码自行调整 + + + + + + 注意:IFreeSql 属于顶级对象,事务无法自动传递。 diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs index 015df564..c5120439 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs @@ -79,55 +79,55 @@ namespace FreeSql.Tests.Odbc.Dameng public DateTime ʱ { get; set; } } - //[Fact] - //public void ı_ֶ() - //{ - // var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<ı>(); - // g.dameng.CodeFirst.SyncStructure<ı>(); + [Fact] + public void ı_ֶ() + { + var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<ı>(); + g.dameng.CodeFirst.SyncStructure<ı>(); - // var item = new ı - // { - // = "Ա", - // ʱ = DateTime.Now - // }; - // Assert.Equal(1, g.dameng.Insert<ı>().AppendData(item).ExecuteAffrows()); - // Assert.NotEqual(Guid.Empty, item.); - // var item2 = g.dameng.Select<ı>().Where(a => a. == item.).First(); - // Assert.NotNull(item2); - // Assert.Equal(item., item2.); - // Assert.Equal(item., item2.); + var item = new ı + { + = "Ա", + ʱ = DateTime.Now + }; + Assert.Equal(1, g.dameng.Insert<ı>().AppendData(item).ExecuteAffrows()); + Assert.NotEqual(Guid.Empty, item.); + var item2 = g.dameng.Select<ı>().Where(a => a. == item.).First(); + Assert.NotNull(item2); + Assert.Equal(item., item2.); + Assert.Equal(item., item2.); - // item. = "Ա"; - // Assert.Equal(1, g.dameng.Update<ı>().SetSource(item).ExecuteAffrows()); - // item2 = g.dameng.Select<ı>().Where(a => a. == item.).First(); - // Assert.NotNull(item2); - // Assert.Equal(item., item2.); - // Assert.Equal(item., item2.); + item. = "Ա"; + Assert.Equal(1, g.dameng.Update<ı>().SetSource(item).ExecuteAffrows()); + item2 = g.dameng.Select<ı>().Where(a => a. == item.).First(); + Assert.NotNull(item2); + Assert.Equal(item., item2.); + Assert.Equal(item., item2.); - // item. = "Ա_repo"; - // var repo = g.dameng.GetRepository<ı>(); - // Assert.Equal(1, repo.Update(item)); - // item2 = g.dameng.Select<ı>().Where(a => a. == item.).First(); - // Assert.NotNull(item2); - // Assert.Equal(item., item2.); - // Assert.Equal(item., item2.); + item. = "Ա_repo"; + var repo = g.dameng.GetRepository<ı>(); + Assert.Equal(1, repo.Update(item)); + item2 = g.dameng.Select<ı>().Where(a => a. == item.).First(); + Assert.NotNull(item2); + Assert.Equal(item., item2.); + Assert.Equal(item., item2.); - // item. = "Ա_repo22"; - // Assert.Equal(1, repo.Update(item)); - // item2 = g.dameng.Select<ı>().Where(a => a. == item.).First(); - // Assert.NotNull(item2); - // Assert.Equal(item., item2.); - // Assert.Equal(item., item2.); - //} - //class ı - //{ - // [Column(IsPrimary = true)] - // public Guid { get; set; } + item. = "Ա_repo22"; + Assert.Equal(1, repo.Update(item)); + item2 = g.dameng.Select<ı>().Where(a => a. == item.).First(); + Assert.NotNull(item2); + Assert.Equal(item., item2.); + Assert.Equal(item., item2.); + } + class ı + { + [Column(IsPrimary = true)] + public Guid { get; set; } - // public string { get; set; } + public string { get; set; } - // public DateTime ʱ { get; set; } - //} + public DateTime ʱ { get; set; } + } [Fact] public void AddUniques() diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs index ef9c6147..7eccb3bb 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs @@ -26,6 +26,59 @@ namespace FreeSql.Tests.Odbc.Oracle public string TitleSub { get; set; } } + [Fact] + public void ֱ_ֶ() + { + var sql = g.oracle.CodeFirst.GetComparisonDDLStatements<ֱ>(); + g.oracle.CodeFirst.SyncStructure<ֱ>(); + + var item = new ֱ + { + = "Ա", + ʱ = DateTime.Now + }; + Assert.Equal(1, g.oracle.Insert<ֱ>().AppendData(item).ExecuteAffrows()); + Assert.NotEqual(Guid.Empty, item.); + var item2 = g.oracle.Select<ֱ>().Where(a => a. == item.).First(); + Assert.NotNull(item2); + Assert.Equal(item., item2.); + Assert.Equal(item., item2.); + + item. = "Ա"; + Assert.Equal(1, g.oracle.Update<ֱ>().SetSource(item).ExecuteAffrows()); + item2 = g.oracle.Select<ֱ>().Where(a => a. == item.).First(); + Assert.NotNull(item2); + Assert.Equal(item., item2.); + Assert.Equal(item., item2.); + + item. = "Ա_repo"; + var repo = g.oracle.GetRepository<ֱ>(); + Assert.Equal(1, repo.Update(item)); + item2 = g.oracle.Select<ֱ>().Where(a => a. == item.).First(); + Assert.NotNull(item2); + Assert.Equal(item., item2.); + Assert.Equal(item., item2.); + + item. = "Ա_repo22"; + Assert.Equal(1, repo.Update(item)); + item2 = g.oracle.Select<ֱ>().Where(a => a. == item.).First(); + Assert.NotNull(item2); + Assert.Equal(item., item2.); + Assert.Equal(item., item2.); + } + [Table(Name = "123tb")] + class ֱ + { + [Column(IsPrimary = true, Name = "123id")] + public Guid { get; set; } + + [Column(Name = "123title")] + public string { get; set; } + + [Column(Name = "123time")] + public DateTime ʱ { get; set; } + } + [Fact] public void ı_ֶ() { diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/g.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/g.cs index 56004005..bf0aa5e8 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/g.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/g.cs @@ -31,8 +31,8 @@ public class g public static IFreeSql sqlserver => sqlserverLazy.Value; static Lazy oracleLazy = new Lazy(() => new FreeSql.FreeSqlBuilder() - .UseConnectionString(FreeSql.DataType.OdbcOracle, "Driver={Oracle in XE};Server=//127.0.0.1:1521/XE;Persist Security Info=False;Trusted_Connection=Yes;UID=odbc1;PWD=123456") - //.UseConnectionFactory(FreeSql.DataType.OdbcOracle, () => new System.Data.Odbc.OdbcConnection("Driver={Oracle in XE};Server=//127.0.0.1:1521/XE;Persist Security Info=False;Trusted_Connection=Yes;UID=odbc1;PWD=123456")) + .UseConnectionString(FreeSql.DataType.OdbcOracle, "Driver={Oracle in XE};Server=//127.0.0.1:1521/XE;Persist Security Info=False;Trusted_Connection=Yes;UID=1odbc;PWD=123456") + //.UseConnectionFactory(FreeSql.DataType.OdbcOracle, () => new System.Data.Odbc.OdbcConnection("Driver={Oracle in XE};Server=//127.0.0.1:1521/XE;Persist Security Info=False;Trusted_Connection=Yes;UID=1odbc;PWD=123456")) .UseAutoSyncStructure(true) .UseLazyLoading(true) .UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper) @@ -70,8 +70,8 @@ public class g public static IFreeSql odbc => odbcLazy.Value; static Lazy damemgLazy = new Lazy(() => new FreeSql.FreeSqlBuilder() - .UseConnectionString(FreeSql.DataType.OdbcDameng, "Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=123USER1;PWD=123456789") - //.UseConnectionFactory(FreeSql.DataType.OdbcDameng, () => new System.Data.Odbc.OdbcConnection("Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=123USER1;PWD=123456789")) + .UseConnectionString(FreeSql.DataType.OdbcDameng, "Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=1user;PWD=123456789") + //.UseConnectionFactory(FreeSql.DataType.OdbcDameng, () => new System.Data.Odbc.OdbcConnection("Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=1user;PWD=123456789")) .UseAutoSyncStructure(true) .UseLazyLoading(true) .UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper) @@ -85,8 +85,8 @@ public class g //启动南大通用数据库 oninit -vy static Lazy gbaseLazy = new Lazy(() => new FreeSql.FreeSqlBuilder() - .UseConnectionString(FreeSql.DataType.OdbcDameng, "Driver={GBase ODBC DRIVER (64-bit)};Server=192.168.164.10:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=123USER1;PWD=123456789") - //.UseConnectionFactory(FreeSql.DataType.OdbcDameng, () => new System.Data.Odbc.OdbcConnection("Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=123USER1;PWD=123456789")) + .UseConnectionString(FreeSql.DataType.OdbcDameng, "Driver={GBase ODBC DRIVER (64-bit)};Server=192.168.164.10:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=1user;PWD=123456789") + //.UseConnectionFactory(FreeSql.DataType.OdbcDameng, () => new System.Data.Odbc.OdbcConnection("Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=1user;PWD=123456789")) .UseAutoSyncStructure(true) .UseLazyLoading(true) .UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper) diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs index 196c0707..57da44cf 100644 --- a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs @@ -119,6 +119,60 @@ namespace FreeSql.Tests.Oracle public string TitleSub { get; set; } } + [Fact] + public void ֱ_ֶ() + { + var sql = g.oracle.CodeFirst.GetComparisonDDLStatements<ֱ>(); + g.oracle.CodeFirst.SyncStructure<ֱ>(); + + var item = new ֱ + { + = "Ա", + ʱ = DateTime.Now + }; + Assert.Equal(1, g.oracle.Insert<ֱ>().AppendData(item).ExecuteAffrows()); + Assert.NotEqual(Guid.Empty, item.); + var item2 = g.oracle.Select<ֱ>().Where(a => a. == item.).First(); + Assert.NotNull(item2); + Assert.Equal(item., item2.); + Assert.Equal(item., item2.); + + item. = "Ա"; + Assert.Equal(1, g.oracle.Update<ֱ>().SetSource(item).ExecuteAffrows()); + item2 = g.oracle.Select<ֱ>().Where(a => a. == item.).First(); + Assert.NotNull(item2); + Assert.Equal(item., item2.); + Assert.Equal(item., item2.); + + item. = "Ա_repo"; + var repo = g.oracle.GetRepository<ֱ>(); + Assert.Equal(1, repo.Update(item)); + item2 = g.oracle.Select<ֱ>().Where(a => a. == item.).First(); + Assert.NotNull(item2); + Assert.Equal(item., item2.); + Assert.Equal(item., item2.); + + item. = "Ա_repo22"; + Assert.Equal(1, repo.Update(item)); + item2 = g.oracle.Select<ֱ>().Where(a => a. == item.).First(); + Assert.NotNull(item2); + Assert.Equal(item., item2.); + Assert.Equal(item., item2.); + } + [Table(Name = "123tb")] + [OraclePrimaryKeyName("pk1_123tb")] + class ֱ + { + [Column(IsPrimary = true, Name = "123id")] + public Guid { get; set; } + + [Column(Name = "123title")] + public string { get; set; } + + [Column(Name = "123time")] + public DateTime ʱ { get; set; } + } + [Fact] public void ı_ֶ() { diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs index cbdb223b..646f1bc6 100644 --- a/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs +++ b/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs @@ -328,7 +328,7 @@ namespace FreeSql.Tests class TestORC12 { - [Column(IsIdentity = true, InsertValueSql = "\"CLASS1_seq_ID\".nextval")] + [Column(IsIdentity = true, InsertValueSql = "\"TAG_SEQ_ID\".nextval")] public int Id { get; set; } } diff --git a/FreeSql.Tests/FreeSql.Tests/g.cs b/FreeSql.Tests/FreeSql.Tests/g.cs index 131bb7bd..e64f0553 100644 --- a/FreeSql.Tests/FreeSql.Tests/g.cs +++ b/FreeSql.Tests/FreeSql.Tests/g.cs @@ -55,8 +55,8 @@ public class g public static IFreeSql sqlserver => sqlserverLazy.Value; static Lazy oracleLazy = new Lazy(() => new FreeSql.FreeSqlBuilder() - .UseConnectionString(FreeSql.DataType.Oracle, "user id=123user1;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=2") - //.UseConnectionFactory(FreeSql.DataType.Oracle, () => new Oracle.ManagedDataAccess.Client.OracleConnection("user id=123user1;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;")) + .UseConnectionString(FreeSql.DataType.Oracle, "user id=1user;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=2") + //.UseConnectionFactory(FreeSql.DataType.Oracle, () => new Oracle.ManagedDataAccess.Client.OracleConnection("user id=1user;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;")) .UseAutoSyncStructure(true) //.UseGenerateCommandParameterWithLambda(true) .UseLazyLoading(true) diff --git a/FreeSql/DataAnnotations/Special/OraclePrimaryKeyNameAttribute.cs b/FreeSql/DataAnnotations/Special/OraclePrimaryKeyNameAttribute.cs index fd2aa735..d3666738 100644 --- a/FreeSql/DataAnnotations/Special/OraclePrimaryKeyNameAttribute.cs +++ b/FreeSql/DataAnnotations/Special/OraclePrimaryKeyNameAttribute.cs @@ -2,6 +2,7 @@ namespace FreeSql.DataAnnotations { + [AttributeUsage(AttributeTargets.Class)] public class OraclePrimaryKeyNameAttribute : Attribute { public OraclePrimaryKeyNameAttribute(string name)