diff --git a/src/Z.Data/System.Data.IDataReader/IDataReader.ToEntity.cs b/src/Z.Data/System.Data.IDataReader/IDataReader.ToEntity.cs
index 5e168401..d6c80793 100644
--- a/src/Z.Data/System.Data.IDataReader/IDataReader.ToEntity.cs
+++ b/src/Z.Data/System.Data.IDataReader/IDataReader.ToEntity.cs
@@ -3,7 +3,7 @@
// Issues: https://github.com/zzzprojects/Z.ExtensionMethods/issues
// License (MIT): https://github.com/zzzprojects/Z.ExtensionMethods/blob/master/LICENSE
// More projects: https://zzzprojects.com/
-// Copyright © ZZZ Projects Inc. All rights reserved.
+// Copyright © ZZZ Projects Inc. All rights reserved.
using System;
using System.Collections.Generic;
using System.Data;
@@ -13,40 +13,46 @@
public static partial class Extensions
{
///
- /// An IDataReader extension method that converts the @this to an entity.
- ///
- /// Generic type parameter.
- /// The @this to act on.
- /// @this as a T.
- public static T ToEntity(this IDataReader @this) where T : new()
- {
- Type type = typeof (T);
- PropertyInfo[] properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
- FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.Instance);
+ /// An IDataReader extension method that converts the @this to an entity.
+ ///
+ /// Generic type parameter.
+ /// The @this to act on.
+ /// @this as a T.
+ public static T ToEntity(this IDataReader @this) where T : new()
+ {
+ if (@this.Read())
+ {
+ Type type = typeof(T);
+ PropertyInfo[] properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
+ FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.Instance);
- var entity = new T();
+ var entity = new T();
- var hash = new HashSet(Enumerable.Range(0, @this.FieldCount)
- .Select(@this.GetName));
+ var hash = new HashSet(Enumerable.Range(0, @this.FieldCount)
+ .Select(@this.GetName));
- foreach (PropertyInfo property in properties)
- {
- if (hash.Contains(property.Name))
- {
- Type valueType = property.PropertyType;
- property.SetValue(entity, @this[property.Name].To(valueType), null);
- }
- }
+ foreach (PropertyInfo property in properties)
+ {
+ if (hash.Contains(property.Name))
+ {
+ Type valueType = property.PropertyType;
+ property.SetValue(entity, @this[property.Name].To(valueType), null);
+ }
+ }
- foreach (FieldInfo field in fields)
- {
- if (hash.Contains(field.Name))
- {
- Type valueType = field.FieldType;
- field.SetValue(entity, @this[field.Name].To(valueType));
+ foreach (FieldInfo field in fields)
+ {
+ if (hash.Contains(field.Name))
+ {
+ Type valueType = field.FieldType;
+ field.SetValue(entity, @this[field.Name].To(valueType));
+ }
+ }
+
+ return entity;
+ }
+ else {
+ return default(T);
}
}
-
- return entity;
- }
-}
\ No newline at end of file
+}