dotnetcore / dotnetcore/FreeSql
主从连表(子表为子查询并有查询条件)在开启UseGenerateCommandParameterWithLambda(true)情况下,查询报错
- Dominant language
- C#
- Stars
- 4.4k
- Forks
- 910
- PR merge metrics
- No merged PRs in 30d
Description
#### 问题描述及重现代码:
主从连表(子表从FromQuery获取,而且有查询条件)
```c#
// c# code
IFreeSql fsql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.MySql, @"server=localhost;Database=jptlc;Uid=root;Pwd=p@55wOrd; port=3306")
.UseAdoConnectionPool(true)
.UseMonitorCommand(cmd => Log.Warning($"sql:{cmd.CommandText}"))
.UseGenerateCommandParameterWithLambda(true) //开启报错,关闭则没问题
.Build();
string inputUserId = "1444";
var testst2 = fsql.Select().Where(a => a.PlatStatus != -1 && a.PlatStatus != 1)
.FromQuery(fsql.Select().Where(b => b.PlatUserId == inputUserId))
.InnerJoin((a, b) => a.Id == b.PlatPathId)
.ToList((a, b) => a);
// entity
[JsonObject(MemberSerialization.OptIn), Table(DisableSyncStructure = true)]
public partial class plataction
{
[JsonProperty, Column(StringLength = 40, IsPrimary = true, IsNullable = false)]
public string Id { get; set; }
[JsonProperty, Column(StringLength = 20)]
public string ActionName { get; set; }
[JsonProperty, Column(StringLength = 200)]
public string ActionUrl { get; set; }
[JsonProperty]
public string PlatPathId { get; set; }
[JsonProperty]
public int PlatStatus { get; set; }
[JsonProperty, Column(StringLength = 40)]
public string CreateBy { get; set; }
[JsonProperty, Column(DbType = "datetime")]
public DateTime? CreateAt { get; set; }
[JsonProperty, Column(StringLength = 40)]
public string ModifyBy { get; set; }
[JsonProperty, Column(DbType = "datetime")]
public DateTime? ModifyAt { get; set; }
[JsonProperty]
public int PlatOrderNo { get; set; }
[JsonProperty]
public int? IsDeleted { get; set; }
}
[JsonObject(MemberSerialization.OptIn), Table(DisableSyncStructure = true)]
public partial class platactioninuser
{
[JsonProperty, Column(IsPrimary = true, IsNullable = false)]
public string Id { get; set; }
[JsonProperty]
public string PlatPathId { get; set; }
[JsonProperty]
public string PlatUserId { get; set; }
[JsonProperty]
public int? IsDeleted { get; set; }
[JsonProperty, Column(StringLength = 40)]
public string CreateBy { get; set; }
[JsonProperty, Column(DbType = "datetime")]
public DateTime? CreateAt { get; set; }
[JsonProperty, Column(StringLength = 40)]
public string ModifyBy { get; set; }
[JsonProperty, Column(DbType = "datetime")]
public DateTime? ModifyAt { get; set; }
[JsonProperty]
public int? PlatStatus { get; set; }
}
```
###报错信息和sql语句
sql:SELECT a.`Id` as1, a.`ActionName` as2, a.`ActionUrl` as3, a.`PlatPathId` as4, a.`PlatStatus` as5, a.`CreateBy` as6, a.`CreateAt` as7, a.`ModifyBy` as8, a.`ModifyAt` as9, a.`PlatOrderNo` as10, a.`IsDeleted` as11
FROM `plataction` a
INNER JOIN (
SELECT a.`Id`, a.`PlatPathId`, a.`PlatUserId`, a.`IsDeleted`, a.`CreateBy`, a.`CreateAt`, a.`ModifyBy`, a.`ModifyAt`, a.`PlatStatus`
FROM `platactioninuser` a
WHERE (a.`PlatUserId` = ?exp_0)) b ON a.`Id` = b.`PlatPathId`
WHERE (a.`PlatStatus` <> -1 AND a.`PlatStatus` <> 1)
[ERR] UseGenerateCommandParameterWithLambda true
System.Exception: Fatal error encountered during command execution
---> MySql.Data.MySqlClient.MySqlException (0x80004005): Fatal error encountered during command execution
---> MySql.Data.MySqlClient.MySqlException (0x80004005): Parameter '?exp_0' must be defined
at MySql.Data.MySqlClient.Statement.SerializeParameterAsync(MySqlParameterCollection parameters, MySqlPacket packet, String parmName, Int32 parameterIndex, Boolean execAsync)
at MySql.Data.MySqlClient.Statement.InternalBindParametersAsync(String sql, MySqlParameterCollection parameters, MySqlPacket packet, Boolean execAsync)
at MySql.Data.MySqlClient.Statement.BindParametersAsync(Boolean execAsync)
at MySql.Data.MySqlClient.Statement.ExecuteAsync(Boolean execAsync)
at MySql.Data.MySqlClient.PreparableStatement.ExecuteAsync(Boolean execAsync)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, Boolean execAsync, CancellationToken cancellationToken)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, Boolean execAsync, CancellationToken cancellationToken)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, Boolean execAsync, CancellationToken cancellationToken)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at FreeSql.Internal.CommonProvider.AdoProvider.ExecuteReaderMultiple(Int32 multipleResult, DbConnection connection, DbTransaction transaction, Action`2 fetchHandler, Action`2 schemaHandler, CommandType cmdType, String cmdText, Int32 cmdTimeout, DbParameter[] cmdParms)
--- End of inner exception stack trace ---
at FreeSql.Internal.CommonProvider.AdoProvider.LoggerException(IObjectPool`1 pool, PrepareCommandResult pc, Exception ex, DateTime dt, StringBuilder logtxt, Boolean isThrowException)
at FreeSql.Internal.CommonProvider.AdoProvider.ExecuteReaderMultiple(Int32 multipleResult, DbConnection connection, DbTransaction transaction, Action`2 fetchHandler, Action`2 schemaHandler, CommandType cmdType, String cmdText, Int32 cmdTimeout, DbParameter[] cmdParms)
at FreeSql.Internal.CommonProvider.AdoProvider.ExecuteReader(DbConnection connection, DbTransaction transaction, Action`1 fetchHandler, CommandType cmdType, String cmdText, Int32 cmdTimeout, DbParameter[] cmdParms)
at FreeSql.Internal.CommonProvider.Select0Provider`2.ToListMrPrivate[TReturn](String sql, ReadAnonymousTypeAfInfo af, ReadAnonymousTypeOtherInfo[] otherData)
at FreeSql.Internal.CommonProvider.Select0Provider`2.ToListMapReaderPrivate[TReturn](ReadAnonymousTypeAfInfo af, ReadAnonymousTypeOtherInfo[] otherData)
at FreeSql.Internal.CommonProvider.Select0Provider`2.InternalToList[TReturn](Expression select)
at FreeSql.Internal.CommonProvider.Select2Provider`2.FreeSql.ISelect.ToList[TReturn](Expression`1 select)
at FreesqlIssue.Program.Main(String[] args) in D:\ServiceStack\FreesqlIssue\Program.cs:line 28
#### 数据库版本
MySql 5.7.36
#### 安装的Nuget包
FreeSql 3.5.210
FreeSql.Provider.MySql 3.5.210
#### .net framework/. net core? 及具体版本
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.