Exemple #1
0
        /// <summary>
        /// 异步执行SQL 语句,并返回 <see cref="IEnumerable"/> 对象
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="cmd">SQL 命令</param>
        /// <param name="definition">命令定义对象,用于解析实体的外键</param>
        /// <returns></returns>
        async Task <List <T> > ExecuteListAsync <T>(IDbCommand cmd, SelectDbCommandDefinition definition)
        {
            IDataReader reader  = null;
            List <T>    objList = new List <T>();

            try
            {
                reader = await this.ExecuteReaderAsync(cmd);

                TypeDeserializer deserializer = new TypeDeserializer(reader, definition);
                objList = await deserializer.DeserializeAsync <T>();
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
                if (reader != null)
                {
                    reader.Dispose();
                }
                this.InternalDispose();
            }
            return(objList);
        }
Exemple #2
0
        // 执行SQL 语句,并返回单个实体对象
        async Task <T> ExecuteAsync <T>(IDbCommand cmd, SelectDbCommandDefinition definition)
        {
            IDataReader   reader = null;
            IDbConnection conn   = null;

            try
            {
                reader = await this.ExecuteReaderAsync(cmd);

                conn = cmd != null ? cmd.Connection : null;
                TypeDeserializer deserializer = new TypeDeserializer(reader, definition);
                List <T>         result       = await deserializer.DeserializeAsync <T>();

                return(result.FirstOrDefault());
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
                if (reader != null)
                {
                    reader.Dispose();
                }
                this.InternalDispose();
            }
        }
Exemple #3
0
 /// <summary>
 /// 实例化<see cref="TypeDeserializer"/> 类的新实例
 /// </summary>
 /// <param name="reader">DataReader</param>
 /// <param name="definition">SQL 命令描述</param>
 internal TypeDeserializer(IDataReader reader, SelectDbCommandDefinition definition)
 {
     _reader             = reader;
     _definition         = definition;
     _deserializers      = new Dictionary <string, Func <IDataRecord, object> >(8);
     _listNavigationKeys = new Dictionary <string, HashSet <string> >(8);
 }
Exemple #4
0
        // 执行SQL 语句,并返回单个实体对象
        T Execute <T>(IDbCommand cmd, SelectDbCommandDefinition definition)
        {
            IDataReader reader = null;

            try
            {
                reader = this.ExecuteReader(cmd);
                TypeDeserializer deserializer = new TypeDeserializer(reader, definition);
                List <T>         result       = deserializer.Deserialize <T>();
                return(result.FirstOrDefault());
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
                if (reader != null)
                {
                    reader.Dispose();
                }
                this.InternalDispose();
            }
        }
 /// <summary>
 /// 实体化 <see cref="TypeDeserializer"/> 类的新实例
 /// </summary>
 /// <param name="reader">DataReader</param>
 /// <param name="definition">命令描述对象,用于解析实体的外键</param>
 public TypeDeserializer(IDataReader reader, SelectDbCommandDefinition definition)
 {
     _definition = definition;
     _reader     = reader;
 }