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) ...@@ -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 // 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)
{
foreach (var generator in tmp)
{ {
generator(); 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 dbType = param.DbType;
var val = param.Value; var val = param.Value;
string name = Clean(param.Name); string name = Clean(param.Name);
...@@ -4525,7 +4531,7 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express ...@@ -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 // Queue the preparation to be fired off when adding parameters to the DbCommand
MAKECALLBACK: MAKECALLBACK:
this.outputCallbacks.Add(() => (outputCallbacks ?? (outputCallbacks = new List<Action>())).Add(() =>
{ {
// Finally, prep the parameter and attach the callback to it // Finally, prep the parameter and attach the callback to it
ParamInfo parameter; ParamInfo parameter;
...@@ -4559,7 +4565,7 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express ...@@ -4559,7 +4565,7 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express
return this; 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>>(); private readonly Dictionary<string, Action<object, DynamicParameters>> cachedOutputSetters = new Dictionary<string,Action<object,DynamicParameters>>();
......
...@@ -1176,7 +1176,6 @@ public void TestSupportForDynamicParameters() ...@@ -1176,7 +1176,6 @@ public void TestSupportForDynamicParameters()
p.Get<int>("age").IsEqualTo(11); p.Get<int>("age").IsEqualTo(11);
} }
[ActiveTest]
public void TestSupportForDynamicParametersOutputExpressions() public void TestSupportForDynamicParametersOutputExpressions()
{ {
var bob = new Person { Name = "bob", PersonId = 1, Address = new Address { PersonId = 2 } }; 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