public async Task <IEnumerable <TodoItem> > Get(ToDoItemFilter filter) { using (var sqlConnection = _connectionFactory.OpenSqlConnection()) { return(await sqlConnection.QueryAsync <TodoItem>( "[dbo].[TodoItems_get]", param : new { @userAccountId = filter.UserAccountId, @projectId = filter.ProjectId, @isCurrent = filter.IsCurrentItem, @statusId = filter.StatusId, @todoItemId = filter.TodoItemId }, commandType : CommandType.StoredProcedure)); } }
public async Task <IEnumerable <TodoItem> > Get(ToDoItemFilter filter) { using (var sqlConnection = _connectionFactory.OpenSqlConnection()) { var reader = await sqlConnection.QueryMultipleAsync( "[dbo].[TodoItems_get]", param : new { @userAccountId = filter.UserAccountId, @projectId = filter.ProjectId, @isCurrent = filter.IsCurrentItem, @statusId = filter.StatusId }, commandType : CommandType.StoredProcedure); var res = reader.Read <TodoItem, Project, TodoItem>((todoItem, project) => { todoItem.Project = project; return(todoItem); }, splitOn: "ProjectId"); var tags = reader.Read <Tag>(); var groupedTags = tags.GroupBy(p => p.TodoItemId); foreach (var group in groupedTags) { var todoItem = res.FirstOrDefault(p => p.Id == group.Key); if (todoItem != null) { todoItem.Tags = group.ToList(); } } return(res); } }