- 修复 MySql 子查询 Enum MapType(int) 表达式判断解析 bug;#1118

This commit is contained in:
2881099 2022-05-24 17:16:40 +08:00
parent 0ea5c5d966
commit 2234012993
3 changed files with 311 additions and 1 deletions

View File

@ -24,6 +24,126 @@
会员ID 会员ID
</summary> </summary>
</member> </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"> <member name="P:FreeSql.Tests.Issues._467.PayOrder.Money">
<summary> <summary>
收款金额 收款金额

View 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,
}
}
}

View File

@ -648,8 +648,12 @@ namespace FreeSql.Internal
{ {
var enumType = leftMapColumn.CsType.NullableTypeOrThis(); var enumType = leftMapColumn.CsType.NullableTypeOrThis();
if (enumType.IsEnum) if (enumType.IsEnum)
{
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); right = formatSql(Enum.Parse(enumType, right.StartsWith("N'") ? right.Substring(1).Trim('\'') : right.Trim('\'')), leftMapColumn.Attribute.MapType, leftMapColumn, tsc.dbParams);
} }
}
if (leftMapColumn == null) if (leftMapColumn == null)
{ {
rightMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, right); rightMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, right);