Entity Framework: ObjectSet и его (обобщенные) отклонения

Я использую: EntityFramework + POCO

Вот эта вещь:

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

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

public class DerivedType : BaseType
{
}

Эта проблема:

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);
    }
}

ЕслиT являетсяBaseType это все работает отлично, но: проблема в том, что в EntityFramework, когда один класс наследует другой, они разделяютObjectSet и, следовательно, еслиT являетсяDerivedType тогдаGetTheObjectSet возвращаетсяObjectSet<BaseType>, который не может быть приведен кObjectSet<DerivedType>.

Есть ли способ на самом деле разыграть эту вещь или как-то еще выполнитьSingleOrDefault? Могут ли эти вещи быть использованы с помощьюIObjectSet<> а такжеIBaseType?

Ответы на вопрос(3)

Ваш ответ на вопрос