From def3ebdeff657ba2bcf1ec436b12f5872bedd911 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Tue, 6 Jul 2021 00:26:16 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20ISelect.AsTable=20?= =?UTF-8?q?=E5=90=8E=20.ToUpdate/ToDelete=20=E6=97=A0=E6=95=88=E7=9A=84=20?= =?UTF-8?q?bug=EF=BC=9B#815?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dameng/Curd/DamengSelectTest.cs | 3 ++ FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml | 20 +++++++++ .../Sqlite/Curd/SqliteSelectTest.cs | 6 +++ FreeSql.Tests/FreeSql.Tests/UnitTest5.cs | 41 +++++++++++++++++++ .../SelectProvider/Select0Provider.cs | 4 ++ 5 files changed, 74 insertions(+) diff --git a/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs index dae7f8aa..792f9b14 100644 --- a/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs @@ -1688,6 +1688,9 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE"" Assert.Equal(5, g.dameng.Select().Count()); Assert.Equal(5, g.dameng.Select().Where(a => a.name.StartsWith("nick")).Count()); + var toupdateSql1 = g.dameng.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ToSql(); + var toupdateSql2 = g.dameng.Select().AsTable((_, old) => "toupd1pk_test").Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ToSql(); + g.dameng.Select().ToDelete().ExecuteAffrows(); Assert.Equal(0, g.dameng.Select().Count()); g.dameng.Insert(new[] { diff --git a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml index 1343ee52..c56f837d 100644 --- a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml +++ b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml @@ -555,6 +555,26 @@ 导航属性 + + + 未知的权限 + + + + + 超级管理员 + + + + + 机构管理员 + + + + + 门店管理员 + + 配置名称 diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs index 9fa50e58..6a31fd5d 100644 --- a/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs @@ -172,6 +172,10 @@ namespace FreeSql.Tests.Sqlite this.name = name; } } + class TestDto3 + { + public string title { get; set; } //这是join表的属性 + } class TestDtoLeftJoin { [Column(IsPrimary = true)] @@ -208,6 +212,8 @@ namespace FreeSql.Tests.Sqlite var testDto213 = select.Limit(10).ToList(a => new TestDto2 { }); var testDto214 = select.Limit(10).ToList(a => new TestDto2() { }); var testDto215 = select.Limit(10).ToList(); + var testDto216 = select.Limit(10).ToList(); + var testDto2211 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto2(a.Id, a.Title)); var testDto2222 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto2()); diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs index 484420de..edadaa48 100644 --- a/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs +++ b/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs @@ -2,6 +2,7 @@ using FreeSql.DataAnnotations; using FreeSql.Internal; using FreeSql.Internal.CommonProvider; +using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Diagnostics; @@ -33,6 +34,46 @@ namespace FreeSql.Tests .ToSql(); Assert.Equal(@"UPDATE `ProductStockBak` SET `NotTaxTotalCostPrice` = 47.844297 * `CurrentQty`, `NotTaxCostPrice` = 47.844297 WHERE (`ProductId` = '00000000-0000-0000-0000-000000000000' AND `MerchantId` = '00000000-0000-0000-0000-000000000000')", sql); + + + //fsql.Aop.CommandBefore += (_, e) => + //{ + // foreach (MySqlParameter cp in e.Command.Parameters) + // if (cp.MySqlDbType == MySqlDbType.Enum) cp.MySqlDbType = MySqlDbType.Int32; + //}; + + var aaa = fsql.Ado.QuerySingle("select ?et", new Dictionary + { + ["et"] = SystemUserType.StroeAdmin + }); + + using (var conn = fsql.Ado.MasterPool.Get()) + { + var cmd = conn.Value.CreateCommand(); + cmd.CommandText = "select ?et"; + cmd.Parameters.Add(new MySqlParameter("et", SystemUserType.StroeAdmin)); + var aaa2 = cmd.ExecuteScalar(); + } + } + + public enum SystemUserType + { + /// + /// 未知的权限 + /// + Unknow = 0, + /// + /// 超级管理员 + /// + SuperAdmin = 1, + /// + /// 机构管理员 + /// + TenantAdmin = 2, + /// + /// 门店管理员 + /// + StroeAdmin = 3 } public partial class ProductStockBak { diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs index d82980eb..51088193 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs @@ -393,6 +393,8 @@ namespace FreeSql.Internal.CommonProvider if (_params.Any()) del._params = new List(_params.ToArray()); if (_whereGlobalFilter.Any()) del._whereGlobalFilter = new List(_whereGlobalFilter.ToArray()); del.WithConnection(_connection).WithTransaction(_transaction).CommandTimeout(_commandTimeout); + var trytbname = ""; + del.AsTable(old => GetTableRuleUnions().FirstOrDefault()?.TryGetValue(_tables[0].Table.Type, out trytbname) == true ? trytbname : null); switch (_orm.Ado.DataType) { case DataType.Dameng: @@ -421,6 +423,8 @@ namespace FreeSql.Internal.CommonProvider if (_params.Any()) upd._params = new List(_params.ToArray()); if (_whereGlobalFilter.Any()) upd._whereGlobalFilter = new List(_whereGlobalFilter.ToArray()); upd.WithConnection(_connection).WithTransaction(_transaction).CommandTimeout(_commandTimeout); + var trytbname = ""; + upd.AsTable(old => GetTableRuleUnions().FirstOrDefault()?.TryGetValue(_tables[0].Table.Type, out trytbname) == true ? trytbname : null); switch (_orm.Ado.DataType) { case DataType.Dameng: