Procedimientos almacenados de Linq a SQL con múltiples resultados

Hemos seguido el siguiente enfoque para obtener los datos de múltiples resultados usando 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

El método de llamada en la clase que hereda de DataContext debería verse así:

[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 el método está decorado no solo con el atributo Function que se asigna al nombre del procedimiento almacenado, sino también con los atributos ReturnType con los tipos de conjuntos de resultados que devuelve el procedimiento almacenado. Además, el método devuelve una interfaz sin tipo de IMultipleResults:

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

para que el programa pueda usar esta interfaz para recuperar los resultados:

BlogContext ctx = new BlogContext(...);

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

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

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

En los procedimientos almacenados anteriores tuvimos dos consultas de selección 1. Seleccionar consulta sin unirse 2. Seleccionar consulta con Unir

Pero en la segunda consulta de selección anterior, los datos que se muestran provienen de una de la tabla, es decir, de la tabla Categorías. Pero hemos utilizado join y queremos mostrar la tabla de datos con los resultados de ambas tablas, es decir, de Categorías y PostCategorías.

Por favor, si alguien puede decirme cómo lograr esto usando LINQ to SQL¿Cuál es la compensación del rendimiento si utilizamos el enfoque anterior en relación con la implementación del enfoque anterior con SQL simple

Respuestas a la pregunta(3)

Su respuesta a la pregunta