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)