У меня есть тип, производный от сущности:
public class WidgetB : WidgetA
{
}
WidgetA является объектом POCO и существует в EDM; WidgetB не существует в EDM, но был настроен в ObjectContext через такой интерфейс:
public interface IContext
{
IObjectSet<WidgetA> WidgetAs { get; }
IQueryable<WidgetB> WidgetBs { get; }
}
public class CustomObjectContext : ObjectContext, IContext
{
private IObjectSet<WidgetA> _widgetAs;
public IObjectSet<WidgetA> WidgetAs
{
get { return _widgetAs ?? (_widgetAs = CreateObjectSet<WidgetAs>()); }
}
private IQueryable<WidgetB> _widgetBs;
public IQueryable<WidgetB> WidgetBs
{
get { return _widgetBs ?? (_widgetBs = CreateObjectSet<WidgetA>("WidgetAs").OfType<WidgetB>()); }
}
WidgetA был настроен как комплексный тип в EDM со всеми свойствами, которые будут иметь WidgetA.
Однако, когда я вызываю контекстный интерфейс:
public WidgetB GetById(int id)
{
return _context.WidgetB.Include("Blah1").Include("Blah2").Where(r => r.Id == id).SingleOrDefault();
}
это приводит к ошибке:
Аргумент типа «выражение OFTYPE» должен указывать EntityType. Переданный тип - ComplexType 'EntityModel.WidgetB'.
Любая помощь будет оценена.