About the "Include" improvement, I am curious if the following could be a better way to generate the sql:
Query the parent table into a temp table.
Select from the temp table (this will be resultset #1 on the data reader).
Select from the child table joining into the temp table (resultset #2 on the data reader).
Drop the temp table.
All 4 of these sql statements could be batched as a single query sent to the db (separated by ";"). The resulting data reader would have 2 result sets (first for the parent objects and second for the children). This is as opposed to running two separate queries and doing the parent "where" filtering twice. Have you evaluated this option? Could your current way cause issues if one of the blog names change in the middle of the two queries? For example, if "ADO.NET Blog" is changed to "ADO.NET", the first query would return that blog name as "ADO.NET Blog" but because of the second repeated query, it's child posts wouldn't be included, right?