Beispiel #1
0
        public async Task <T> GetAsync(Object pkValue)
        {
            Type   t    = typeof(T);
            String name = EntityTableMapper.GetPkColumn(t);
            Expression <Func <T, Boolean> > expression = PropertyValueExpression <T> .BuildExpression(name, pkValue);

            return(await m_executeBatch.QueryAsync(m_query.Select().Where(expression).End()));
        }
Beispiel #2
0
        public async Task <IEnumerable <Tuple <T, K, P> > > ExecuteReaderAsync <K, P>(IBatch batch, List <ColumnRelevanceMapper> mapper) where K : IEntity, new() where P : IEntity, new()
        {
            if (SqlExecuteExtensionAction.Instance.BatchAction != null)
            {
                SqlExecuteExtensionAction.Instance.AddContext(batch);
            }
            List <Tuple <T, K, P> > entitybuffer = new List <Tuple <T, K, P> >(128);

            using (var Connection = Create.Invoke())
            {
                var reader = await Connection.ExecuteReaderAsync(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);
                    P    p  = new P();
                    Type p1 = typeof(P);
                    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 if (column.TableName == k1)
                            {
                                PropertyValueExpression <K> .SetValue(k, column.ColumnName, obj);
                            }
                            else
                            {
                                PropertyValueExpression <P> .SetValue(p, column.ColumnName, obj);
                            }
                        }
                    }
                    Tuple <T, K, P> tuple = new Tuple <T, K, P>(t, k, p);
                    entitybuffer.Add(tuple);
                }
            }
            return(entitybuffer);
        }
Beispiel #3
0
 public override Expression Clone()
 {
     return(new OrderByCollectionExpression((CollectionExpression <OrderByExpression>)PropertyValueExpression.Clone()));
 }