C#在查询中巧妙地使用多个实体:参数太多

C#在查询中巧妙地使用多个实体:参数太多,c#,mapping,multiple-columns,dapper,C#,Mapping,Multiple Columns,Dapper,我使用dapper通过存储过程查询数据库。 真正的问题是我的sp返回了5个实体,因此当我需要mapDapper时,会返回一个错误: 委托函数不接受5个参数 我想使用一个存储过程,因为它很复杂,有很多连接 var queryParameters = new DynamicParameters(); queryParameters.Add("@no_dossier", numero_dossier); queryParameters.Add("@utilisateur_magasin_id", ut

我使用dapper通过存储过程查询数据库。 真正的问题是我的sp返回了5个实体,因此当我需要map
Dapper
时,会返回一个错误:

委托函数不接受5个参数

我想使用一个存储过程,因为它很复杂,有很多连接

var queryParameters = new DynamicParameters();
queryParameters.Add("@no_dossier", numero_dossier);
queryParameters.Add("@utilisateur_magasin_id", utilisateur_id);
var result =
    db.Query<SocieteContactDTO, AppareilClientDTO, AppareilDTO, MarqueDTO, AppareilEnseigneDTO, DossierFrontDTO, SocieteContactDTO>("ps_appareil_client_by_client_id_pour_recherche_front",
        (societecontact, appclient, app, marque, dossierfront) =>
        {                   
            return societecontact;
        }, queryParameters, splitOn: "appareil_id,appareil_client_id, marques_id, code_produit", commandType: CommandType.StoredProcedure)
      .ToList();
var queryParameters=new DynamicParameters();
查询参数。添加(“无档案”,数字档案);
查询参数。添加(“@utisulateur\u magasin\u id”,utisulateur\u id);
var结果=
db.Query(“ps\U装置\U客户端\U客户端\U id\U倾倒\U回收前”,
(SocietContact、应用客户端、应用程序、品牌、档案封面)=>
{                   
回归社会交往;
},查询参数,拆分:“设备id,设备客户id,商品id,代码产品”,命令类型:commandType.StoredProcess)
.ToList();

我使用了dapper,它在fun delegate中支持多达七个实体。你能更新简洁的版本吗?我不知道你用的是什么版本,但是用的是v1.60.0,对我来说很好

 public async Task<IEnumerable<TResult>> ExecuteReaderAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TResult>(
        TDbConnection connection,
        CommandType cmdType,
        string cmdText,
        TDbParameter commandParameters,
        Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh,TResult> map,
        string splitOn = "Id")
    {

        try
        {
            using (var _connection = connection)
            {
                _connection.Open();

                return await connection.QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TResult>(cmdText, map, commandParameters, splitOn: splitOn, commandType: cmdType);
            }
        }

        catch (Exception ex)
        {
            throw;
        }
    }
public async Task ExecuteReaderAsync(
TDB连接,
CommandType cmdType,
字符串cmdText,
TDB参数命令参数,
Func地图,
字符串splitOn=“Id”)
{
尝试
{
使用(变量连接=连接)
{
_connection.Open();
返回wait connection.QueryAsync(cmdText、map、commandParameters、splitOn:splitOn、commandType:cmdType);
}
}
捕获(例外情况除外)
{
投掷;
}
}

我不想使用太多的Select。我只需要一个包含大量联接的select。请尝试为类型
AppareilEnseigneDTO
societedcontactedto
docsierfront
的任一侧添加一个参数。你有5个,但你需要7个。你好,我的整洁:1.60.6