This commit is contained in:
grzegorz.russek
2016-08-04 13:00:19 +00:00
parent 0c55aedbb1
commit 4fcef4d1ef
5 changed files with 44 additions and 26 deletions

View File

@@ -3698,9 +3698,7 @@ namespace DynamORM
/// <returns>Returns instance of builder on which action is set.</returns>
public static T CreateTemporaryParameterAction<T>(this T b, Action<IParameter> a) where T : IDynamicQueryBuilder
{
if (a == null)
b.OnCreateTemporaryParameter = null;
else
if (a != null)
{
if (b.OnCreateTemporaryParameter == null)
b.OnCreateTemporaryParameter = new List<Action<IParameter>>();
@@ -3718,9 +3716,7 @@ namespace DynamORM
/// <returns>Returns instance of builder on which action is set.</returns>
public static T CreateParameterAction<T>(this T b, Action<IParameter, IDbDataParameter> a) where T : IDynamicQueryBuilder
{
if (a == null)
b.OnCreateParameter = null;
else
if (a != null)
{
if (b.OnCreateParameter == null)
b.OnCreateParameter = new List<Action<IParameter, IDbDataParameter>>();
@@ -7090,6 +7086,8 @@ namespace DynamORM
VirtualMode = false;
Tables = new List<ITableInfo>();
Parameters = new Dictionary<string, IParameter>();
OnCreateTemporaryParameter = new List<Action<IParameter>>();
OnCreateParameter = new List<Action<IParameter, IDbDataParameter>>();
WhereCondition = null;
OpenBracketsCount = 0;
@@ -11871,8 +11869,12 @@ namespace DynamORM
object value = null;
try
{
if (!Type.IsAssignableFrom(val.GetType()))
{
if (Type.IsArray || _genericEnumerable)
{
if (val != null)
{
var lst = (val as IEnumerable<object>).Select(x => GetElementVal(_arrayType, x)).ToList();
@@ -11882,8 +11884,14 @@ namespace DynamORM
foreach (var e in lst)
((Array)value).SetValue(e, i++);
}
else
value = Array.CreateInstance(_arrayType, 0);
}
else
value = GetElementVal(Type, val);
}
else
value = val;
Setter(dest, value);
}

View File

@@ -30,6 +30,8 @@ using System.Linq;
using DynamORM.Builders;
using DynamORM.Builders.Implementation;
using NUnit.Framework;
using DynamORM.Tests.Helpers;
using System.Collections.Generic;
namespace DynamORM.Tests.Modify
{

View File

@@ -214,6 +214,8 @@ namespace DynamORM.Builders.Implementation
VirtualMode = false;
Tables = new List<ITableInfo>();
Parameters = new Dictionary<string, IParameter>();
OnCreateTemporaryParameter = new List<Action<IParameter>>();
OnCreateParameter = new List<Action<IParameter, IDbDataParameter>>();
WhereCondition = null;
OpenBracketsCount = 0;

View File

@@ -877,9 +877,7 @@ namespace DynamORM
/// <returns>Returns instance of builder on which action is set.</returns>
public static T CreateTemporaryParameterAction<T>(this T b, Action<IParameter> a) where T : IDynamicQueryBuilder
{
if (a == null)
b.OnCreateTemporaryParameter = null;
else
if (a != null)
{
if (b.OnCreateTemporaryParameter == null)
b.OnCreateTemporaryParameter = new List<Action<IParameter>>();
@@ -897,9 +895,7 @@ namespace DynamORM
/// <returns>Returns instance of builder on which action is set.</returns>
public static T CreateParameterAction<T>(this T b, Action<IParameter, IDbDataParameter> a) where T : IDynamicQueryBuilder
{
if (a == null)
b.OnCreateParameter = null;
else
if (a != null)
{
if (b.OnCreateParameter == null)
b.OnCreateParameter = new List<Action<IParameter, IDbDataParameter>>();

View File

@@ -146,8 +146,12 @@ namespace DynamORM.Mapper
object value = null;
try
{
if (!Type.IsAssignableFrom(val.GetType()))
{
if (Type.IsArray || _genericEnumerable)
{
if (val != null)
{
var lst = (val as IEnumerable<object>).Select(x => GetElementVal(_arrayType, x)).ToList();
@@ -157,8 +161,14 @@ namespace DynamORM.Mapper
foreach (var e in lst)
((Array)value).SetValue(e, i++);
}
else
value = Array.CreateInstance(_arrayType, 0);
}
else
value = GetElementVal(Type, val);
}
else
value = val;
Setter(dest, value);
}