我使用: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<>
and投射这些东西IBaseType
吗?