Commit c03040da authored by Marc Gravell's avatar Marc Gravell

don't init outputCallbacks unless there are callbacks

parent d1e6d6f5
......@@ -4277,14 +4277,20 @@ protected void AddParameters(IDbCommand command, SqlMapper.Identity identity)
}
// Now that the parameters are added to the command, let's place our output callbacks
foreach (var generator in this.outputCallbacks)
var tmp = outputCallbacks;
if (tmp != null)
{
generator();
foreach (var generator in tmp)
{
generator();
}
}
}
foreach (var param in parameters.Values.Where(p => !p.CameFromTemplate))
foreach (var param in parameters.Values)
{
if (param.CameFromTemplate) continue;
var dbType = param.DbType;
var val = param.Value;
string name = Clean(param.Name);
......@@ -4525,7 +4531,7 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express
// Queue the preparation to be fired off when adding parameters to the DbCommand
MAKECALLBACK:
this.outputCallbacks.Add(() =>
(outputCallbacks ?? (outputCallbacks = new List<Action>())).Add(() =>
{
// Finally, prep the parameter and attach the callback to it
ParamInfo parameter;
......@@ -4559,7 +4565,7 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express
return this;
}
private readonly List<Action> outputCallbacks = new List<Action>();
private List<Action> outputCallbacks;
private readonly Dictionary<string, Action<object, DynamicParameters>> cachedOutputSetters = new Dictionary<string,Action<object,DynamicParameters>>();
......
......@@ -1176,7 +1176,6 @@ public void TestSupportForDynamicParameters()
p.Get<int>("age").IsEqualTo(11);
}
[ActiveTest]
public void TestSupportForDynamicParametersOutputExpressions()
{
var bob = new Person { Name = "bob", PersonId = 1, Address = new Address { PersonId = 2 } };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment