Ejemplo n.º 1
0
        public IEnumerable <Tuple <T, K> > ExecuteReader <K>(IBatch batch, List <ColumnRelevanceMapper> mapper) where K : IEntity, new()
        {
            List <Tuple <T, K> > entitybuffer = new List <Tuple <T, K> >(128);

            using (var Connection = Create.CreateConnection())
            {
                var reader = Connection.ExecuteReader(batch.SqlBuilder, batch.DynamicParameters, commandTimeout: 3600);
                while (reader.Read())
                {
                    T    t  = new T();
                    Type t1 = typeof(T);
                    K    k  = new K();
                    Type k1 = typeof(K);
                    for (Int32 i = 0; i < reader.FieldCount; i++)
                    {
                        Object obj = reader.GetValue(i);
                        if (obj != null)
                        {
                            ColumnRelevanceMapper column = mapper[i];
                            if (column.TableName == t1)
                            {
                                PropertyValueExpression <T> .SetValue(t, column.ColumnName, obj);
                            }
                            else
                            {
                                PropertyValueExpression <K> .SetValue(k, column.ColumnName, obj);
                            }
                        }
                    }
                    Tuple <T, K> tuple = new Tuple <T, K>(t, k);
                    entitybuffer.Add(tuple);
                }
            }
            return(entitybuffer);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 根据主键查询数据
        /// </summary>
        /// <param name="pkValue"></param>
        /// <returns></returns>
        public T Get(Object pkValue)
        {
            Type   t    = typeof(T);
            String name = EntityTableMapper.GetPkColumn(t);
            Expression <Func <T, Boolean> > expression = PropertyValueExpression <T> .BuildExpression(name, pkValue);

            return(_executeBatch.Query(_query.Select().Where(expression).End()));
        }