I use ExpandoObject for initialize Execute() method parameters. If take a look at SqlMapper.Execute() method, multiExec enabled for IEnumeable param, but it's unexpected behavior with ExpandoObject. Please, refine conditions like this:
if (multiExec != null && !(multiExec is string) &&
// additional conditions:
!(multiExec is IDynamicMetaObjectProvider) &&
!(multiExec is IEnumerable<KeyValuePair<string, object>>))
{
// execute as multiExec
}