From 22340129931f278f5a2b713f6caea67fe9e826e3 Mon Sep 17 00:00:00 2001
From: 2881099 <2881099@qq.com>
Date: Tue, 24 May 2022 17:16:40 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20MySql=20=E5=AD=90?=
=?UTF-8?q?=E6=9F=A5=E8=AF=A2=20Enum=20MapType(int)=20=E8=A1=A8=E8=BE=BE?=
=?UTF-8?q?=E5=BC=8F=E5=88=A4=E6=96=AD=E8=A7=A3=E6=9E=90=20bug=EF=BC=9B#11?=
=?UTF-8?q?18?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml | 120 +++++++++++
FreeSql.Tests/FreeSql.Tests/Issues/1118.cs | 186 ++++++++++++++++++
FreeSql/Internal/CommonExpression.cs | 6 +-
3 files changed, 311 insertions(+), 1 deletion(-)
create mode 100644 FreeSql.Tests/FreeSql.Tests/Issues/1118.cs
diff --git a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
index 4428e136..72e97ebc 100644
--- a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
+++ b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
@@ -24,6 +24,126 @@
会员ID
+
+
+
+
+
+
+
+ 推销员Id
+
+
+
+
+ 洗车卡业务类型:0=自助卡 1=自动卡 2=通用卡[BaseCardBussinessType]
+
+
+
+
+ 收益
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 推销员活动配置Id
+
+
+
+
+ 洗车卡业务类型:0=自助卡 1=自动卡 2=通用卡[BaseCardBussinessType]
+
+
+
+
+ 推销员Id
+
+
+
+
+ 用户Id
+
+
+
+
+ 订单编号
+
+
+
+
+ 支付金额
+
+
+
+
+ 支付方式 0、余额支付 1、微信支付 2、支付宝 99、无
+
+
+
+
+ 支付状态:1、待付款,5、已完成,10、关闭,15、退款中,20、退款完成
+
+
+
+
+ 支付时间
+
+
+
+
+ 是否已激活
+
+
+
+
+ 激活时间
+
+
+
+
+ 购买的365年卡Id
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 自助卡
+
+
+
+
+ 自动卡
+
+
+
+
+ 通用卡
+
+
收款金额
diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/1118.cs b/FreeSql.Tests/FreeSql.Tests/Issues/1118.cs
new file mode 100644
index 00000000..d1366ba2
--- /dev/null
+++ b/FreeSql.Tests/FreeSql.Tests/Issues/1118.cs
@@ -0,0 +1,186 @@
+using FreeSql.DataAnnotations;
+using Newtonsoft.Json;
+using System;
+using System.ComponentModel;
+using Xunit;
+
+namespace FreeSql.Tests.Issues
+{
+ public class _1118
+ {
+ [Fact]
+ public void PropertyType()
+ {
+ var fsql = g.mysql;
+
+ var activityPeopleCountList = fsql.Select()
+ .Where(a => a.SalesmanId == "xxx")
+ .ToList(a => new
+ {
+ Type = a.Type,
+ Count = fsql.Select()
+ .Where(o => o.SalesmanId == a.SalesmanId)
+ .Where(o => a.Type == o.ActivityType)//报错ArgumentException: Requested value 'a.`Type`' was not found.
+ //.Where("o.ActivityType = a.Type", null)//正常
+ .Where(o => o.PayStatus == SalesmanActivityOrderPayStatusEnum.YiWanCheng)
+ .Count(),
+ });
+ }
+
+ [JsonObject(MemberSerialization.OptIn), Table(Name = "salesman_activity_config")]
+ public partial class SalesmanActivityConfig
+ {
+ ///
+ ///
+ ///
+ [JsonProperty, Column(Name = "Id", DbType = "char(32)", IsNullable = false, IsPrimary = true)]
+ public string Id { get; set; }
+
+ ///
+ ///推销员Id
+ ///
+ [JsonProperty, Column(Name = "SalesmanId", DbType = "char(32)", IsNullable = false)]
+ public string SalesmanId { get; set; }
+
+ ///
+ ///洗车卡业务类型:0=自助卡 1=自动卡 2=通用卡[BaseCardBussinessType]
+ ///
+ [JsonProperty, Column(Name = "Type", DbType = "int", IsNullable = false)]
+ public BaseCardBussinessType Type { get; set; }
+
+ ///
+ ///收益
+ ///
+ [JsonProperty, Column(Name = "DivideAmount", DbType = "decimal(10,2)", IsNullable = false)]
+ public decimal DivideAmount { get; set; }
+
+ ///
+ ///
+ ///
+ [JsonProperty, Column(Name = "AddTime", DbType = "datetime", IsNullable = false)]
+ public DateTime AddTime { get; set; }
+
+ ///
+ ///
+ ///
+ [JsonProperty, Column(Name = "UpdateTime", DbType = "datetime", IsNullable = true)]
+ public DateTime? UpdateTime { get; set; }
+
+ }
+ [JsonObject(MemberSerialization.OptIn), Table(Name = "salesman_activity_order")]
+ public partial class SalesmanActivityOrder
+ {
+ ///
+ ///
+ ///
+ [JsonProperty, Column(Name = "Id", DbType = "char(32)", IsNullable = false, IsPrimary = true)]
+ public string Id { get; set; }
+
+ ///
+ ///推销员活动配置Id
+ ///
+ [JsonProperty, Column(Name = "SalesmanActivityConfigId", DbType = "char(32)", IsNullable = false)]
+ public string SalesmanActivityConfigId { get; set; }
+
+ ///
+ ///洗车卡业务类型:0=自助卡 1=自动卡 2=通用卡[BaseCardBussinessType]
+ ///
+ [JsonProperty, Column(Name = "ActivityType", DbType = "int", IsNullable = false)]
+ public BaseCardBussinessType ActivityType { get; set; }
+
+ ///
+ ///推销员Id
+ ///
+ [JsonProperty, Column(Name = "SalesmanId", DbType = "char(32)", IsNullable = false)]
+ public string SalesmanId { get; set; }
+
+ ///
+ ///用户Id
+ ///
+ [JsonProperty, Column(Name = "AccountId", DbType = "char(32)", IsNullable = false)]
+ public string AccountId { get; set; }
+
+ ///
+ ///订单编号
+ ///
+ [JsonProperty, Column(Name = "OrderNo", DbType = "varchar(100)", IsNullable = false)]
+ public string OrderNo { get; set; }
+
+ ///
+ ///支付金额
+ ///
+ [JsonProperty, Column(Name = "PayAmount", DbType = "decimal(10,2)", IsNullable = false)]
+ public decimal PayAmount { get; set; }
+
+ ///
+ ///支付方式 0、余额支付 1、微信支付 2、支付宝 99、无
+ ///
+ [JsonProperty, Column(Name = "PayMethod", DbType = "int", IsNullable = false)]
+ public SalesmanActivityOrderPayMethodEnum PayMethod { get; set; }
+
+ ///
+ ///支付状态:1、待付款,5、已完成,10、关闭,15、退款中,20、退款完成
+ ///
+ [JsonProperty, Column(Name = "PayStatus", DbType = "int", IsNullable = false)]
+ public SalesmanActivityOrderPayStatusEnum PayStatus { get; set; }
+
+ ///
+ ///支付时间
+ ///
+ [JsonProperty, Column(Name = "PayTime", DbType = "datetime", IsNullable = true)]
+ public DateTime? PayTime { get; set; }
+
+ ///
+ ///是否已激活
+ ///
+ [JsonProperty, Column(Name = "IsActivated", DbType = "bit(1)", IsNullable = false)]
+ public bool IsActivated { get; set; }
+
+ ///
+ ///激活时间
+ ///
+ [JsonProperty, Column(Name = "ActivatedTime", DbType = "datetime", IsNullable = true)]
+ public DateTime? ActivatedTime { get; set; }
+
+ ///
+ ///购买的365年卡Id
+ ///
+ [JsonProperty, Column(Name = "CardOrderId", DbType = "char(32)", IsNullable = true)]
+ public string CardOrderId { get; set; }
+
+ ///
+ ///
+ ///
+ [JsonProperty, Column(Name = "AddTime", DbType = "datetime", IsNullable = false)]
+ public DateTime AddTime { get; set; }
+
+ ///
+ ///
+ ///
+ [JsonProperty, Column(Name = "UpdateTime", DbType = "datetime", IsNullable = true)]
+ public DateTime? UpdateTime { get; set; }
+ }
+
+ public enum SalesmanActivityOrderPayMethodEnum { Wepay, Alipay, Bank }
+ public enum SalesmanActivityOrderPayStatusEnum { Pending, Compelte, YiWanCheng }
+ public enum BaseCardBussinessType
+ {
+ ///
+ /// 自助卡
+ ///
+ [Description("自助卡")]
+ ZiZhuKa = 0,
+ ///
+ /// 自动卡
+ ///
+ [Description("自动卡")]
+ ZiDongKa = 1,
+ ///
+ /// 通用卡
+ ///
+ [Description("通用卡")]
+ TongYongKa = 2,
+ }
+ }
+
+}
diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs
index 75578839..7dbb3c28 100644
--- a/FreeSql/Internal/CommonExpression.cs
+++ b/FreeSql/Internal/CommonExpression.cs
@@ -648,7 +648,11 @@ namespace FreeSql.Internal
{
var enumType = leftMapColumn.CsType.NullableTypeOrThis();
if (enumType.IsEnum)
- right = formatSql(Enum.Parse(enumType, right.StartsWith("N'") ? right.Substring(1).Trim('\'') : right.Trim('\'')), leftMapColumn.Attribute.MapType, leftMapColumn, tsc.dbParams);
+ {
+ rightMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, right);
+ if (rightMapColumn != null)
+ right = formatSql(Enum.Parse(enumType, right.StartsWith("N'") ? right.Substring(1).Trim('\'') : right.Trim('\'')), leftMapColumn.Attribute.MapType, leftMapColumn, tsc.dbParams);
+ }
}
if (leftMapColumn == null)
{