Beispiel #1
0
        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);
        }
Beispiel #2
0
        public TEntity GetRow <TEntity>()
        {
            this.CheckDataReader();
            if (_changeType == SqlRowChangedTypes.Deleted)
            {
                return(default(TEntity));
            }

            var converter = EntityUtility.CreateConverter <TEntity>();

            return(converter(DataReader));
        }