From f22f65fee9de6fae2c23620de9f0b94d01121045 Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Fri, 28 Feb 2020 10:41:03 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20DbContext/Repository?=
=?UTF-8?q?=20Update=20=E4=B8=8D=E6=9B=B4=E6=96=B0=20DbUpdateValue=20?=
=?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=9B#219?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FreeSql.DbContext/FreeSql.DbContext.xml | 7 -----
...eeSql.Tests.Provider.MySqlConnector.csproj | 1 +
.../MySqlConnector/MySqlCodeFirstTest.cs | 24 ++++++++++++++
.../Dameng/DamengCodeFirstTest.cs | 22 +++++++++++++
.../Default/OdbcCodeFirstTest.cs | 22 +++++++++++++
.../MySql/MySqlCodeFirstTest.cs | 22 +++++++++++++
.../Oracle/OracleCodeFirstTest.cs | 22 +++++++++++++
.../PostgreSQL/PostgreSQLCodeFirstTest.cs | 22 +++++++++++++
.../SqlServer/SqlServerCodeFirstTest.cs | 22 +++++++++++++
.../MsAccess/MsAccessCodeFirstTest.cs | 22 +++++++++++++
.../FreeSql.Tests/MySql/MySqlCodeFirstTest.cs | 26 +++++++++++++++-
.../Oracle/OracleCodeFirstTest.cs | 22 +++++++++++++
.../PostgreSQL/PostgreSQLCodeFirstTest.cs | 22 +++++++++++++
.../SqlServer/SqlServerCodeFirstTest.cs | 22 +++++++++++++
.../Sqlite/SqliteCodeFirstTest.cs | 22 +++++++++++++
FreeSql.Tests/FreeSql.Tests/UnitTest3.cs | 8 +++++
FreeSql/Extensions/EntityUtilExtensions.cs | 31 +++++++++++++------
17 files changed, 321 insertions(+), 18 deletions(-)
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.Provider.MySqlConnector/FreeSql.Tests.Provider.MySqlConnector.csproj b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/FreeSql.Tests.Provider.MySqlConnector.csproj
index 9ed1b21a..07efc1f8 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/FreeSql.Tests.Provider.MySqlConnector.csproj
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/FreeSql.Tests.Provider.MySqlConnector.csproj
@@ -17,6 +17,7 @@
+
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlCodeFirstTest.cs
index 7f174fd9..86460dce 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlCodeFirstTest.cs
@@ -57,6 +57,30 @@ namespace FreeSql.Tests.MySqlConnector
Assert.Equal(item., item2.);
g.mysql.Update<ı2>().SetSource(item2).ExecuteAffrows();
+
+
+
+ item. = "Ա";
+ Assert.Equal(1, g.mysql.Update<ı2>().SetSource(item).ExecuteAffrows());
+ item2 = g.mysql.Select<ı2>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
+
+ item. = "Ա_repo";
+ var repo = g.mysql.GetRepository<ı2>();
+ Assert.Equal(1, repo.Update(item));
+ item2 = g.mysql.Select<ı2>().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.mysql.Select<ı2>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
}
class ı2
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs
index 9d19d28b..b5ba4461 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs
@@ -28,6 +28,28 @@ namespace FreeSql.Tests.Odbc.Dameng
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. = "Ա_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 ı
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs
index c26d27ff..e04d5d40 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs
@@ -25,6 +25,28 @@ namespace FreeSql.Tests.Odbc.Default
Assert.NotNull(item2);
Assert.Equal(item.编号, item2.编号);
Assert.Equal(item.标题, item2.标题);
+
+ item.标题 = "测试标题更新";
+ Assert.Equal(1, g.odbc.Update<测试中文表>().SetSource(item).ExecuteAffrows());
+ item2 = g.odbc.Select<测试中文表>().Where(a => a.编号 == item.编号).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item.编号, item2.编号);
+ Assert.Equal(item.标题, item2.标题);
+
+ item.标题 = "测试标题更新_repo";
+ var repo = g.odbc.GetRepository<测试中文表>();
+ Assert.Equal(1, repo.Update(item));
+ item2 = g.odbc.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.odbc.Select<测试中文表>().Where(a => a.编号 == item.编号).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item.编号, item2.编号);
+ Assert.Equal(item.标题, item2.标题);
}
class 测试中文表
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs
index d06c3a27..6c52d3ae 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs
@@ -55,6 +55,28 @@ namespace FreeSql.Tests.Odbc.MySql
Assert.NotNull(item2);
Assert.Equal(item., item2.);
Assert.Equal(item., item2.);
+
+ item. = "Ա";
+ Assert.Equal(1, g.mysql.Update<ı2>().SetSource(item).ExecuteAffrows());
+ item2 = g.mysql.Select<ı2>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
+
+ item. = "Ա_repo";
+ var repo = g.mysql.GetRepository<ı2>();
+ Assert.Equal(1, repo.Update(item));
+ item2 = g.mysql.Select<ı2>().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.mysql.Select<ı2>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
}
class ı2
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs
index a5686eeb..2ae10e27 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs
@@ -28,6 +28,28 @@ namespace FreeSql.Tests.Odbc.Oracle
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.);
}
class ı
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLCodeFirstTest.cs
index 81773eba..96a926fd 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLCodeFirstTest.cs
@@ -32,6 +32,28 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
Assert.NotNull(item2);
Assert.Equal(item., item2.);
Assert.Equal(item., item2.);
+
+ item. = "Ա";
+ Assert.Equal(1, g.pgsql.Update<ı>().SetSource(item).ExecuteAffrows());
+ item2 = g.pgsql.Select<ı>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
+
+ item. = "Ա_repo";
+ var repo = g.pgsql.GetRepository<ı>();
+ Assert.Equal(1, repo.Update(item));
+ item2 = g.pgsql.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.pgsql.Select<ı>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
}
class ı
{
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerCodeFirstTest.cs
index 68ca3891..355854b2 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerCodeFirstTest.cs
@@ -29,6 +29,28 @@ namespace FreeSql.Tests.Odbc.SqlServer
Assert.NotNull(item2);
Assert.Equal(item., item2.);
Assert.Equal(item., item2.);
+
+ item. = "Ա";
+ Assert.Equal(1, g.sqlserver.Update<ı>().SetSource(item).ExecuteAffrows());
+ item2 = g.sqlserver.Select<ı>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
+
+ item. = "Ա_repo";
+ var repo = g.sqlserver.GetRepository<ı>();
+ Assert.Equal(1, repo.Update(item));
+ item2 = g.sqlserver.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.sqlserver.Select<ı>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
}
class ı
{
diff --git a/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs
index 4f3506f1..bd27dc0c 100644
--- a/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs
@@ -28,6 +28,28 @@ namespace FreeSql.Tests.MsAccess
Assert.NotNull(item2);
Assert.Equal(item., item2.);
Assert.Equal(item., item2.);
+
+ item. = "Ա";
+ Assert.Equal(1, g.msaccess.Update<ı>().SetSource(item).ExecuteAffrows());
+ item2 = g.msaccess.Select<ı>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
+
+ item. = "Ա_repo";
+ var repo = g.msaccess.GetRepository<ı>();
+ Assert.Equal(1, repo.Update(item));
+ item2 = g.msaccess.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.msaccess.Select<ı>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
}
class ı
{
diff --git a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs
index f98d084c..ad7efc27 100644
--- a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs
@@ -52,6 +52,28 @@ namespace FreeSql.Tests.MySql
Assert.NotNull(item2);
Assert.Equal(item., item2.);
Assert.Equal(item., item2.);
+
+ item.22 = "Ա";
+ Assert.Equal(1, g.mysql.Update<ı2>().SetSource(item).ExecuteAffrows());
+ item2 = g.mysql.Select<ı2>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item.22, item2.22);
+
+ item.22 = "Ա_repo";
+ var repo = g.mysql.GetRepository<ı2>();
+ Assert.Equal(1, repo.Update(item));
+ item2 = g.mysql.Select<ı2>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item.22, item2.22);
+
+ item.22 = "Ա_repo22";
+ Assert.Equal(1, repo.Update(item));
+ item2 = g.mysql.Select<ı2>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item.22, item2.22);
}
class ı2
{
@@ -60,6 +82,8 @@ namespace FreeSql.Tests.MySql
public string { get; protected set; }
+ public string 22 { get; set; }
+
[Column(ServerTime = DateTimeKind.Local, CanUpdate = false)]
public DateTime ʱ { get; protected set; }
@@ -68,7 +92,7 @@ namespace FreeSql.Tests.MySql
public static ı2 Create(string title, DateTime ctm)
{
- return new ı2 { = title, ʱ = ctm };
+ return new ı2 { = title, 22 = title, ʱ = ctm };
}
}
diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs
index d1ae51d2..f1eeab72 100644
--- a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs
@@ -28,6 +28,28 @@ namespace FreeSql.Tests.Oracle
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.);
}
class ı
{
diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs
index c2a92151..5db7074a 100644
--- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs
@@ -35,6 +35,28 @@ namespace FreeSql.Tests.PostgreSQL
Assert.NotNull(item2);
Assert.Equal(item., item2.);
Assert.Equal(item., item2.);
+
+ item. = "Ա";
+ Assert.Equal(1, g.pgsql.Update<ı>().SetSource(item).ExecuteAffrows());
+ item2 = g.pgsql.Select<ı>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
+
+ item. = "Ա_repo";
+ var repo = g.pgsql.GetRepository<ı>();
+ Assert.Equal(1, repo.Update(item));
+ item2 = g.pgsql.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.pgsql.Select<ı>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
}
class ı
{
diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs
index 2566b4ec..b86c0e2f 100644
--- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs
@@ -29,6 +29,28 @@ namespace FreeSql.Tests.SqlServer
Assert.NotNull(item2);
Assert.Equal(item., item2.);
Assert.Equal(item., item2.);
+
+ item. = "Ա";
+ Assert.Equal(1, g.sqlserver.Update<ı>().SetSource(item).ExecuteAffrows());
+ item2 = g.sqlserver.Select<ı>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
+
+ item. = "Ա_repo";
+ var repo = g.sqlserver.GetRepository<ı>();
+ Assert.Equal(1, repo.Update(item));
+ item2 = g.sqlserver.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.sqlserver.Select<ı>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
}
class ı
{
diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs
index 9eb09d80..1d48cb21 100644
--- a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs
@@ -56,6 +56,28 @@ namespace FreeSql.Tests.Sqlite
Assert.NotNull(item2);
Assert.Equal(item., item2.);
Assert.Equal(item., item2.);
+
+ item. = "Ա";
+ Assert.Equal(1, g.sqlite.Update<ı>().SetSource(item).ExecuteAffrows());
+ item2 = g.sqlite.Select<ı>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
+
+ item. = "Ա_repo";
+ var repo = g.sqlite.GetRepository<ı>();
+ Assert.Equal(1, repo.Update(item));
+ item2 = g.sqlite.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.sqlite.Select<ı>().Where(a => a. == item.).First();
+ Assert.NotNull(item2);
+ Assert.Equal(item., item2.);
+ Assert.Equal(item., item2.);
}
class ı
{
diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs
index 8d1d11fe..c468a7a7 100644
--- a/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs
+++ b/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs
@@ -57,6 +57,14 @@ namespace FreeSql.Tests
.Any())
.ToSql(a => a.Name);
+ sql = context.Songs
+ .Where(a =>
+ context.Authors
+ .Select //加上这句就不报错,不加上报 variable 'a' of type 'Song' referenced from scope '', but it is not defined
+ .Where(b => b.SongId == a.Id)
+ .Any())
+ .ToSql(a => a.Name);
+
//using (var conn = new SqlConnection("Data Source=.;Integrated Security=True;Initial Catalog=webchat-abc;Pooling=true;Max Pool Size=13"))
//{
// conn.Open();
diff --git a/FreeSql/Extensions/EntityUtilExtensions.cs b/FreeSql/Extensions/EntityUtilExtensions.cs
index 7ec6cc31..044fd446 100644
--- a/FreeSql/Extensions/EntityUtilExtensions.cs
+++ b/FreeSql/Extensions/EntityUtilExtensions.cs
@@ -553,20 +553,31 @@ namespace FreeSql.Extensions.EntityUtil
{
if (_table.ColumnsByCs.TryGetValue(prop.Name, out var trycol) == false) continue;
exps.Add(
- Expression.IfThenElse(
- Expression.Equal(
- Expression.MakeMemberAccess(var1Parm, prop),
- Expression.MakeMemberAccess(var2Parm, prop)
- ),
+ trycol.Attribute.CanUpdate == false ?
Expression.IfThen(
Expression.IsTrue(parm3),
Expression.Call(var1Ret, typeof(List).GetMethod("Add", new Type[] { typeof(string) }), Expression.Constant(trycol.Attribute.Name))
- ),
- Expression.IfThen(
- Expression.IsFalse(parm3),
- Expression.Call(var1Ret, typeof(List).GetMethod("Add", new Type[] { typeof(string) }), Expression.Constant(trycol.Attribute.Name))
+ ) : (
+ trycol.Attribute.CanUpdate && string.IsNullOrEmpty(trycol.DbUpdateValue) == false ?
+ Expression.IfThen(
+ Expression.IsFalse(parm3),
+ Expression.Call(var1Ret, typeof(List).GetMethod("Add", new Type[] { typeof(string) }), Expression.Constant(trycol.Attribute.Name))
+ ) :
+ Expression.IfThenElse(
+ Expression.Equal(
+ Expression.MakeMemberAccess(var1Parm, prop),
+ Expression.MakeMemberAccess(var2Parm, prop)
+ ),
+ Expression.IfThen(
+ Expression.IsTrue(parm3),
+ Expression.Call(var1Ret, typeof(List).GetMethod("Add", new Type[] { typeof(string) }), Expression.Constant(trycol.Attribute.Name))
+ ),
+ Expression.IfThen(
+ Expression.IsFalse(parm3),
+ Expression.Call(var1Ret, typeof(List).GetMethod("Add", new Type[] { typeof(string) }), Expression.Constant(trycol.Attribute.Name))
+ )
+ )
)
- )
);
a++;
}