internal Converter <DbDataReader, T> GetConverter <T>(string spName, DbDataReader schema, int resultDepth) { Type entityType = typeof(T); string key = String.Concat(spName, entityType.Name, schema.FieldCount.ToString(), resultDepth.ToString()); var converter = (Converter <DbDataReader, T>)Cache[key]; if (converter == null) { TypeCode code = Type.GetTypeCode(entityType); if (code == TypeCode.Object && entityType != typeof(Guid)) { var convertibles = GetProperties(spName, entityType); if (schema.FieldCount <= convertibles.Count) { converter = EntityConverter <T> .CreateReadSingle(convertibles.ToArray()); } } if (converter == null) { converter = EntityUtility.CreateConverter <T>(); } Cache[key] = converter; } return(converter); }
public TEntity GetRow <TEntity>() { this.CheckDataReader(); if (_changeType == SqlRowChangedTypes.Deleted) { return(default(TEntity)); } var converter = EntityUtility.CreateConverter <TEntity>(); return(converter(DataReader)); }