public virtual T DoSelectSingle <T>(List <Expression <Func <T, bool> > > where = null, Dictionary <Expression <Func <T, object> >, RowOrder> orderBy = null) where T : class { var query = _queryGenerator.GenerateSelect(out IList <QueryInfo> queryParameters, where, orderBy); var cmd = new DotEntityDbCommand(DbOperationType.Select, query, queryParameters, commandBehavior: CommandBehavior.SingleRow); cmd.ProcessReader(reader => DataDeserializer <T> .Instance.DeserializeSingle(reader, cmd)); DotEntityDbConnector.ExecuteCommand(cmd); return(cmd.GetResultAs <T>()); }
public virtual T DoSingle <T>(string query, object parameters, Func <T, bool> resultAction = null) where T : class { var actualQuery = query; TryGetFromCache(out query, out IList <QueryInfo> queryParameters); query = query ?? _queryGenerator.Query(actualQuery, parameters, out queryParameters); TrySetCache(query, queryParameters); var cmd = new DotEntityDbCommand(DbOperationType.Select, query, queryParameters, commandBehavior: CommandBehavior.SingleRow); cmd.ProcessReader(reader => DataDeserializer <T> .Instance.DeserializeSingle(reader, cmd)); DotEntityDbConnector.ExecuteCommand(cmd); return(cmd.GetResultAs <T>()); }
public virtual IEnumerable <T> DoSelect <T>(List <Expression <Func <T, bool> > > where = null, Dictionary <Expression <Func <T, object> >, RowOrder> orderBy = null, int page = 1, int count = int.MaxValue) where T : class { ThrowIfInvalidPage(orderBy, page, count); TryGetFromCache(out string query, out IList <QueryInfo> queryParameters); query = query ?? _queryGenerator.GenerateSelect(out queryParameters, where, orderBy, page, count); TrySetCache(query, queryParameters); var cmd = new DotEntityDbCommand(DbOperationType.Select, query, queryParameters); cmd.ProcessReader(reader => { return(DataDeserializer <T> .Instance.DeserializeMany(reader, cmd)); }); DotEntityDbConnector.ExecuteCommand(cmd); return(cmd.GetResultAs <IEnumerable <T> >()); }
public virtual Tuple <int, IEnumerable <T> > DoSelectWithTotalMatches <T>(List <Expression <Func <T, bool> > > where = null, Dictionary <Expression <Func <T, object> >, RowOrder> orderBy = null, int page = 1, int count = int.MaxValue) where T : class { ThrowIfInvalidPage(orderBy, page, count); TryGetFromCache(out string query, out IList <QueryInfo> queryParameters); query = query ?? _queryGenerator.GenerateSelectWithTotalMatchingCount(out queryParameters, where, orderBy, page, count); TrySetCache(query, queryParameters); var cmd = new DotEntityDbCommand(DbOperationType.Select, query, queryParameters); cmd.ProcessReader(reader => { var ts = DataDeserializer <T> .Instance.DeserializeMany(reader, cmd); reader.NextResult(); reader.Read(); var fv = reader[0]; var total = fv as int? ?? Convert.ToInt32(fv); return(Tuple.Create(total, ts)); }); DotEntityDbConnector.ExecuteCommand(cmd); return(cmd.GetResultAs <Tuple <int, IEnumerable <T> > >()); }