Procedimentos armazenados de LINQ to SQL com vários resultados

Seguimos a abordagem abaixo para obter os dados de vários resultados usando o LINQ To SQL

CREATE PROCEDURE dbo.GetPostByID
(
    @PostID int
)
AS
    SELECT    *
    FROM      Posts AS p
    WHERE     p.PostID = @PostID

    SELECT    c.*
    FROM      Categories AS c
    JOIN      PostCategories AS pc
    ON        (pc.CategoryI,D = c.CategoryID)
    WHERE     pc.PostID = @PostID

O método de chamada na classe que herda de DataContext deve se parecer com:

[Database(Name = "Blog")]
public class BlogContext : DataContext
{
    ... 

    [Function(Name = "dbo.GetPostByID")]
    [ResultType(typeof(Post))]
    [ResultType(typeof(Category))]
    public IMultipleResults GetPostByID(int postID)
    {
        IExecuteResult result = 
            this.ExecuteMethodCall(this, 
                  ((MethodInfo)(MethodInfo.GetCurrentMethod())), 
                  postID);

        return (IMultipleResults)(result.ReturnValue);
    }
}

Observe que o método é decorado não apenas com o atributo Function que é mapeado para o nome do procedimento armazenado, mas também com os atributos ReturnType com os tipos de conjuntos de resultados que o procedimento armazenado retorna. Além disso, o método retorna uma interface sem tipo de IMultipleResults:

public interface IMultipleResults : IFunctionResult, IDisposable
{
    IEnumerable<TElement> GetResult<TElement>();
}

para que o programa possa usar essa interface para recuperar os resultados:

BlogContext ctx = new BlogContext(...);

IMultipleResults results = ctx.GetPostByID(...);

IEnumerable<Post> posts = results.GetResult<Post>();

IEnumerable<Category> categories = results.GetResult<Category>();

Nos procedimentos armazenados acima, tivemos duas consultas de seleção 1. Selecione a consulta sem associação 2. Selecione a consulta com Associação

Mas, na segunda consulta selecionada, os dados exibidos são de uma das tabelas, ou seja, da tabela Categorias. Mas usamos junção e queremos exibir a tabela de dados com os resultados de ambas as tabelas, ou seja, de Categorias e PostCategories.

Por favor, se alguém puder me informar como conseguir isso usando LINQ to SQLQual é a troca de desempenho se usarmos a abordagem acima em relação à implementação da abordagem acima com SQL simples

questionAnswers(3)

yourAnswerToTheQuestion