This commit is contained in:
grzegorz.russek committed 2022-03-04 06:46:41 +00:00
1 parent d83ac6307e
commit b5cb4ba17f
5 files changed
+84 -31

No files matched your search

+27 -2
View File
@@ -203,7 +203,7 @@ namespace DynamORM
mainResult = cache.EnumerateReader().ToList();
}
else if (argType.IsValueType)
else if (argType.IsValueType || types[0] == typeof(string))
{
Type listType = typeof(List<>).MakeGenericType(new Type[] { argType });
IList listInstance = (IList)Activator.CreateInstance(listType);
@@ -219,6 +219,25 @@ namespace DynamORM
mainResult = listInstance;
}
else if (types[0] == typeof(Guid))
{
Type listType = typeof(List<>).MakeGenericType(new Type[] { argType });
IList listInstance = (IList)Activator.CreateInstance(listType);
object defVal = listType.GetDefaultValue();
IDataReader cache = null;
using (IDataReader rdr = cmd.ExecuteReader())
cache = rdr.CachedReader();
while (cache.Read())
{
if (cache[0] == DBNull.Value && Guid.TryParse(cache[0].ToString(), out Guid g))
listInstance.Add(g);
}
mainResult = listInstance;
}
else
{
DynamicTypeMap mapper = DynamicMapperCache.GetMapper(argType);
@@ -232,12 +251,18 @@ namespace DynamORM
mainResult = cache.EnumerateReader().MapEnumerable(argType).ToList();
}
}
else if (types[0].IsValueType)
else if (types[0].IsValueType || types[0] == typeof(string))
{
mainResult = cmd.ExecuteScalar();
if (mainResult != DBNull.Value)
mainResult = types[0].CastObject(mainResult);
}
else if (types[0] == typeof(Guid))
{
mainResult = cmd.ExecuteScalar();
if (mainResult != DBNull.Value && Guid.TryParse(mainResult.ToString(), out Guid g))
mainResult = g;
}
else
{
DynamicTypeMap mapper = DynamicMapperCache.GetMapper(types[0]);