首页 > 解决方案 > 用 dapper 提供多个参数?

问题描述

我有这个代码:

public void SaveBoardgameCollection(BoardgameCollection boardgameCollection)
{
    if (boardgameCollection?.BoardgameUserStatusList.Count > 0)
    {
        using (IDbConnection connection = new SqlConnection(_databaseConnectionString.ConnectionString))
        {
            connection.Execute("dbo.BoardgameCollectionInsert @BoardGameComment, @Own, @ForTrade, @Want, @WantToPlay, @WantToBuy, @WishList, @Grade, @GameId, @PreOrdered, @PrevOwned", boardgameCollection.BoardgameUserStatusList);
        }
    }
}

假设 SP 现在需要 BoardgameUserStatusList 对象不包含的另一个参数。我怎样才能在同一个执行中提供这个,例如用户 ID(GUID)?

编辑:

如果我这样做:

queryParameters = new DynamicParameters();
queryParameters.Add("@MyParameter1", boardgameCollection.BoardgameUserStatusList);
queryParameters.Add("@MyParameter2", System.Guid.NewGuid());
//@BoardGameComment, @Own, @ForTrade, @Want, @WantToPlay, @WantToBuy, @WishList, @Grade, @GameId, @PreOrdered, @PrevOwned
connection.Execute("dbo.BoardgameCollectionInsert ", queryParameters);

我会得到一个 NotSupportedException,它说 BoardgameUserStatus(BoardgameUserStatusList 中的对象不能用作参数值?

标签: c#sql-serverdapper

解决方案


您是否尝试过使用动态参数?这是一个简单的例子。

var parameters = new DynamicParameters();
parameters.Add("@MyParameter", value);
parameters.Add("@MySecondParameter", value2);

using (IDbConnection connection = new SqlConnection(_databaseConnectionString.ConnectionString))
{
    db.ExecuteAsync("dbo.BoardgameCollectionClear", parameters, commandType: CommandType.StoredProcedure);
}

推荐阅读