Return Custom Object <List T> from Entity framework and asignar to Object Data Source

Necesito orientación sobre un problema, estoy usando Entity Framework 4.0, tengo un DAL y BLL y estoy vinculado a ObjectDataSource en la página.

Tuve que escribir un procedimiento almacenado usandoPIVOT y SQL dinámico para devolver los datos de varias entidades de la manera que quiero. Ahora estoy tratando de descubrir cómo puedo hacer que Entity Framework devuelva un objeto personalizado que puedo vincular a miObjectDataSource en la página, NECESITO usar un objeto personalizado o un objeto dinámico, ya que el procedimiento almacenado puede devolver cualquier número de columnas, por lo que no puedo usar una clase o entidad fuertemente tipada y también necesito poder vincular esto con un @ObjectDataSource.

¿Alguien puede señalar una buena manera de hacer esto y cómo definir mi función? Con algunos ejemplos de código, por favor.

Leí que debería intentar usarList<T> para devolver un objeto ya que EF no admite la devolución de tablas de datos / conjuntos de datos, tengo lo siguiente hasta ahora, pero sé que esto no es correcto.

No he trabajado mucho con los genéricos, si pudiera señalar cómo hacerlo, estoy seguro de que esto sería útil para mucha gente. Proporcione ejemplos de código para la función y cómo vincularObjectDataSource al objeto devuelto?

¡¡Tu ayuda es muy apreciada!

Gracias por tu ayuda Richard, así es como se ve mi función en este momento en función de tu sugerencia para usar DbDataRecord

unción @ C # paraObjectDataSource en DAL

public List<DbDataRecord> GetData(int product_id)
{
    List<DbDataRecord> availableProducts = new List<DbDataRecord>();

    var groupData = context.ExecuteStoreQuery<DbDataRecord>("exec 
  spGetProducts @ProductID={0}", product_id);

    availableProducts = groupData.ToList<DbDataRecord>();

    return availableProducts;
}

ObjectDataSource en la página ASPX

<asp:ObjectDataSource ID="ODSProductAvailability" runat="server"
        TypeName="Project.BLL.ProductBL" 
        SelectMethod="GetData"  >
     <SelectParameters>
        <asp:SessionParameter Name="product_id" SessionField="ProductID" />
     </SelectParameters>
</asp:ObjectDataSource>

Ahora estoy recibiendo este error cuando accedo a la página:

El tipo de resultado 'System.Data.Common.DbDataRecord' puede no ser abstracto y debe incluir un constructor predeterminado

Esto es porque elExecuteStoreQuery espera ser definido clase o entidad? ¿Cómo puedo crear un objeto basado en los resultados del procedimiento almacenado y asignarlo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta