mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	- 修复 MySql 子查询 Enum MapType(int) 表达式判断解析 bug;#1118
This commit is contained in:
		@@ -24,6 +24,126 @@
 | 
			
		||||
            会员ID
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityConfig.Id">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityConfig.SalesmanId">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>推销员Id    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityConfig.Type">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>洗车卡业务类型:0=自助卡 1=自动卡 2=通用卡[BaseCardBussinessType]    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityConfig.DivideAmount">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>收益    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityConfig.AddTime">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityConfig.UpdateTime">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.Id">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.SalesmanActivityConfigId">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>推销员活动配置Id    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.ActivityType">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>洗车卡业务类型:0=自助卡 1=自动卡 2=通用卡[BaseCardBussinessType]    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.SalesmanId">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>推销员Id    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.AccountId">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>用户Id    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.OrderNo">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>订单编号    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.PayAmount">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>支付金额    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.PayMethod">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>支付方式  0、余额支付 1、微信支付 2、支付宝 99、无    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.PayStatus">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>支付状态:1、待付款,5、已完成,10、关闭,15、退款中,20、退款完成    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.PayTime">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>支付时间    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.IsActivated">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>是否已激活    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.ActivatedTime">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>激活时间    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.CardOrderId">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>购买的365年卡Id    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.AddTime">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._1118.SalesmanActivityOrder.UpdateTime">
 | 
			
		||||
             <summary>
 | 
			
		||||
            <para>    </para>
 | 
			
		||||
             </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:FreeSql.Tests.Issues._1118.BaseCardBussinessType.ZiZhuKa">
 | 
			
		||||
            <summary>
 | 
			
		||||
            自助卡
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:FreeSql.Tests.Issues._1118.BaseCardBussinessType.ZiDongKa">
 | 
			
		||||
            <summary>
 | 
			
		||||
            自动卡
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:FreeSql.Tests.Issues._1118.BaseCardBussinessType.TongYongKa">
 | 
			
		||||
            <summary>
 | 
			
		||||
            通用卡
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:FreeSql.Tests.Issues._467.PayOrder.Money">
 | 
			
		||||
            <summary>
 | 
			
		||||
            收款金额
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										186
									
								
								FreeSql.Tests/FreeSql.Tests/Issues/1118.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								FreeSql.Tests/FreeSql.Tests/Issues/1118.cs
									
									
									
									
									
										Normal file
									
								
							@@ -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<SalesmanActivityConfig>()
 | 
			
		||||
                 .Where(a => a.SalesmanId == "xxx")
 | 
			
		||||
                 .ToList(a => new
 | 
			
		||||
                 {
 | 
			
		||||
                     Type = a.Type,
 | 
			
		||||
                     Count = fsql.Select<SalesmanActivityOrder>()
 | 
			
		||||
                         .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
 | 
			
		||||
        {
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "Id", DbType = "char(32)", IsNullable = false, IsPrimary = true)]
 | 
			
		||||
            public string Id { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>推销员Id    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "SalesmanId", DbType = "char(32)", IsNullable = false)]
 | 
			
		||||
            public string SalesmanId { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>洗车卡业务类型:0=自助卡 1=自动卡 2=通用卡[BaseCardBussinessType]    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "Type", DbType = "int", IsNullable = false)]
 | 
			
		||||
            public BaseCardBussinessType Type { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>收益    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "DivideAmount", DbType = "decimal(10,2)", IsNullable = false)]
 | 
			
		||||
            public decimal DivideAmount { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "AddTime", DbType = "datetime", IsNullable = false)]
 | 
			
		||||
            public DateTime AddTime { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [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
 | 
			
		||||
        {
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "Id", DbType = "char(32)", IsNullable = false, IsPrimary = true)]
 | 
			
		||||
            public string Id { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>推销员活动配置Id    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "SalesmanActivityConfigId", DbType = "char(32)", IsNullable = false)]
 | 
			
		||||
            public string SalesmanActivityConfigId { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>洗车卡业务类型:0=自助卡 1=自动卡 2=通用卡[BaseCardBussinessType]    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "ActivityType", DbType = "int", IsNullable = false)]
 | 
			
		||||
            public BaseCardBussinessType ActivityType { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>推销员Id    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "SalesmanId", DbType = "char(32)", IsNullable = false)]
 | 
			
		||||
            public string SalesmanId { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>用户Id    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "AccountId", DbType = "char(32)", IsNullable = false)]
 | 
			
		||||
            public string AccountId { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>订单编号    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "OrderNo", DbType = "varchar(100)", IsNullable = false)]
 | 
			
		||||
            public string OrderNo { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>支付金额    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "PayAmount", DbType = "decimal(10,2)", IsNullable = false)]
 | 
			
		||||
            public decimal PayAmount { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>支付方式  0、余额支付 1、微信支付 2、支付宝 99、无    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "PayMethod", DbType = "int", IsNullable = false)]
 | 
			
		||||
            public SalesmanActivityOrderPayMethodEnum PayMethod { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>支付状态:1、待付款,5、已完成,10、关闭,15、退款中,20、退款完成    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "PayStatus", DbType = "int", IsNullable = false)]
 | 
			
		||||
            public SalesmanActivityOrderPayStatusEnum PayStatus { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>支付时间    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "PayTime", DbType = "datetime", IsNullable = true)]
 | 
			
		||||
            public DateTime? PayTime { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>是否已激活    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "IsActivated", DbType = "bit(1)", IsNullable = false)]
 | 
			
		||||
            public bool IsActivated { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>激活时间    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "ActivatedTime", DbType = "datetime", IsNullable = true)]
 | 
			
		||||
            public DateTime? ActivatedTime { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>购买的365年卡Id    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "CardOrderId", DbType = "char(32)", IsNullable = true)]
 | 
			
		||||
            public string CardOrderId { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [JsonProperty, Column(Name = "AddTime", DbType = "datetime", IsNullable = false)]
 | 
			
		||||
            public DateTime AddTime { get; set; }
 | 
			
		||||
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            ///<para>    </para>
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [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
 | 
			
		||||
        {
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            /// 自助卡
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [Description("自助卡")]
 | 
			
		||||
            ZiZhuKa = 0,
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            /// 自动卡
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [Description("自动卡")]
 | 
			
		||||
            ZiDongKa = 1,
 | 
			
		||||
            /// <summary>
 | 
			
		||||
            /// 通用卡
 | 
			
		||||
            /// </summary>
 | 
			
		||||
            [Description("通用卡")]
 | 
			
		||||
            TongYongKa = 2,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -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)
 | 
			
		||||
            {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user