Entity Framework: ObjectSet y su varianza (genérica)

Yo uso: EntityFramework + POCO

Aquí está la cosa:

public interface IBaseType
{
    int Id { get; set; }
}

public class BaseType : IBaseType
{
    public virtual int Id { get; set; }
}

public class DerivedType : BaseType
{
}

El problema:

public class EntityFetcher<T> where T : BaseType
{
    public object GetById(int id)
    {
        ObjectSet<T> objectSet = (ObjectSet<T>)GetTheObjectSet(typeof(T)); 

        return objectSet.SingleOrDefault((o) => o.Id == id);
    }
}

SiT esBaseType todo esto funciona perfectamente, pero: el problema es que en EntityFramework cuando una clase hereda otra comparten laObjectSet y, por lo tanto, siT esDerivedType entonces laGetTheObjectSet devolucionesObjectSet<BaseType>, que no se puede enviar aObjectSet<DerivedType>.

¿Hay alguna manera de lanzar esto realmente o de alguna otra manera ejecutar elSingleOrDefault? ¿Se pueden lanzar esas cosas usando elIObjectSet<> yIBaseType?

Respuestas a la pregunta(3)

Su respuesta a la pregunta