Search code examples
c#sql-serverdapper

Provide multiple parameters with dapper?


I have this code:

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);
        }
    }
}

Say that the SP now demands another parameter that BoardgameUserStatusList objects does not contain. How can I provide this in the same Execute, for example a User Id(GUID)?

Edit:

If I do this:

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

I will get a NotSupportedException that says that the BoardgameUserStatus(object in BoardgameUserStatusList cannot be used as a parameter value?


Solution

  • Have you tried using a dynamic parameter? Here is a simple example.

    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);
    }