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) {