diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index d198eb6c..ab4c3bf2 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -130,6 +130,13 @@ 清空状态数据 + + + 根据 lambda 条件删除数据 + + + + 添加 diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs index 3be75126..e269e7e0 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs @@ -10,6 +10,85 @@ namespace FreeSql.Tests.Odbc.MySql { public class MySqlCodeFirstTest { + [Fact] + public void EnumStartValue1() + { + var fsql = g.mysql; + fsql.Delete().Where("1=1").ExecuteAffrows(); + + var repo = fsql.GetRepository(); + var item1 = repo.Insert(new TS_ESV1 { Status = TS_TSV1_Status.Status1 }); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status1, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status1, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status1' WHERE (`Id` = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status1).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status2' WHERE (`Id` = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status2).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status3' WHERE (`Id` = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status3).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status1' WHERE (`Id` = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status1).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status2' WHERE (`Id` = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status2).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status3' WHERE (`Id` = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status3).ToSql().Replace("\r\n", "")); + + item1.Status = TS_TSV1_Status.Status1; + repo.Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status1, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status1, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + item1.Status = TS_TSV1_Status.Status2; + repo.Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status2, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status2, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + item1.Status = TS_TSV1_Status.Status3; + repo.Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status3, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status3, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + item1.Status = TS_TSV1_Status.Status3; + fsql.GetRepository().Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status3, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status3, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + item1.Status = TS_TSV1_Status.Status2; + fsql.GetRepository().Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status2, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status2, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + } + public class TS_ESV1 + { + public Guid Id { get; set; } + public TS_TSV1_Status Status { get; set; } + } + public enum TS_TSV1_Status + { + Status1 = 1, + Status2 = 3, + Status3 = 5 + } + [Fact] public void StringLength() { diff --git a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs index e018ae54..43501614 100644 --- a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs @@ -11,6 +11,85 @@ namespace FreeSql.Tests.MySql { public class MySqlCodeFirstTest { + [Fact] + public void EnumStartValue1() + { + var fsql = g.mysql; + fsql.Delete().Where("1=1").ExecuteAffrows(); + + var repo = fsql.GetRepository(); + var item1 = repo.Insert(new TS_ESV1 { Status = TS_TSV1_Status.Status1 }); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status1, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status1, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status1' WHERE (`Id` = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status1).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status2' WHERE (`Id` = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status2).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status3' WHERE (`Id` = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status3).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status1' WHERE (`Id` = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status1).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status2' WHERE (`Id` = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status2).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status3' WHERE (`Id` = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status3).ToSql().Replace("\r\n", "")); + + item1.Status = TS_TSV1_Status.Status1; + repo.Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status1, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status1, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + item1.Status = TS_TSV1_Status.Status2; + repo.Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status2, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status2, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + item1.Status = TS_TSV1_Status.Status3; + repo.Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status3, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status3, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + item1.Status = TS_TSV1_Status.Status3; + fsql.GetRepository().Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status3, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status3, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + item1.Status = TS_TSV1_Status.Status2; + fsql.GetRepository().Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status2, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status2, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + } + public class TS_ESV1 + { + public Guid Id { get; set; } + public TS_TSV1_Status Status { get; set; } + } + public enum TS_TSV1_Status + { + Status1 = 1, + Status2 = 3, + Status3 = 5 + } + [Fact] public void DateTime_1() { diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs index 34c6c2e4..fac3b6e9 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs @@ -12,6 +12,85 @@ namespace FreeSql.Tests.SqlServer { public class SqlServerCodeFirstTest { + [Fact] + public void EnumStartValue1() + { + var fsql = g.sqlserver; + fsql.Delete().Where("1=1").ExecuteAffrows(); + + var repo = fsql.GetRepository(); + var item1 = repo.Insert(new TS_ESV1 { Status = TS_TSV1_Status.Status1 }); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status1, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status1, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + Assert.Equal($"UPDATE [TS_ESV1] SET [Status] = 1 WHERE ([Id] = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status1).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE [TS_ESV1] SET [Status] = 3 WHERE ([Id] = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status2).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE [TS_ESV1] SET [Status] = 5 WHERE ([Id] = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status3).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE [TS_ESV1] SET [Status] = 1 WHERE ([Id] = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status1).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE [TS_ESV1] SET [Status] = 3 WHERE ([Id] = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status2).ToSql().Replace("\r\n", "")); + Assert.Equal($"UPDATE [TS_ESV1] SET [Status] = 5 WHERE ([Id] = '{item1.Id}')", fsql.Update().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status3).ToSql().Replace("\r\n", "")); + + item1.Status = TS_TSV1_Status.Status1; + repo.Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status1, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status1, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + item1.Status = TS_TSV1_Status.Status2; + repo.Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status2, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status2, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + item1.Status = TS_TSV1_Status.Status3; + repo.Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status3, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status3, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + item1.Status = TS_TSV1_Status.Status3; + fsql.GetRepository().Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status3, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status3, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + + item1.Status = TS_TSV1_Status.Status2; + fsql.GetRepository().Update(item1); + Assert.True(fsql.Select().Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status2, fsql.Select().Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status2, fsql.Select().Where(a => a.Id == item1.Id).First(a => a.Status)); + Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any()); + Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First().Status); + Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status)); + } + public class TS_ESV1 + { + public Guid Id { get; set; } + public TS_TSV1_Status Status { get; set; } + } + public enum TS_TSV1_Status + { + Status1 = 1, + Status2 = 3, + Status3 = 5 + } + [Fact] public void Blob() { diff --git a/FreeSql.Tests/FreeSql.Tests/g.cs b/FreeSql.Tests/FreeSql.Tests/g.cs index 533be9f6..43f83258 100644 --- a/FreeSql.Tests/FreeSql.Tests/g.cs +++ b/FreeSql.Tests/FreeSql.Tests/g.cs @@ -42,12 +42,7 @@ public class g static Lazy sqlserverLazy = new Lazy(() => new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3") - //.UseConnectionFactory(FreeSql.DataType.SqlServer, () => new Microsoft.Data.SqlClient.SqlConnection("Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;")) - //.UseConnectionFactory(FreeSql.DataType.SqlServer, () => new System.Data.SqlClient.SqlConnection("Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;")) - //.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=192.168.164.129;uid=sa;pwd=123456;Initial Catalog=ds_shop;Pooling=true;Max Pool Size=3") - //.UseConnectionFactory(FreeSql.DataType.SqlServer, () => new System.Data.SqlClient.SqlConnection("Data Source=192.168.164.129;uid=sa;pwd=123456;Initial Catalog=ds_shop;Pooling=true;")) .UseAutoSyncStructure(true) - //.UseGenerateCommandParameterWithLambda(true) .UseMonitorCommand( cmd => Trace.WriteLine("\r\n线程" + Thread.CurrentThread.ManagedThreadId + ": " + cmd.CommandText) //监听SQL命令对象,在执行前 //, (cmd, traceLog) => Console.WriteLine(traceLog) diff --git a/FreeSql/Extensions/FreeSqlGlobalExtensions.cs b/FreeSql/Extensions/FreeSqlGlobalExtensions.cs index c4534b31..7925f280 100644 --- a/FreeSql/Extensions/FreeSqlGlobalExtensions.cs +++ b/FreeSql/Extensions/FreeSqlGlobalExtensions.cs @@ -163,7 +163,11 @@ public static partial class FreeSqlGlobalExtensions var dict = new Dictionary(StringComparer.CurrentCultureIgnoreCase); foreach (var prop in props) { - if (dict.ContainsKey(prop.Name)) continue; + if (dict.TryGetValue(prop.Name, out var existsProp)) + { + if (existsProp.DeclaringType != prop) dict[prop.Name] = prop; + continue; + } dict.Add(prop.Name, prop); } return dict;