Когда я пытаюсь использовать запрос OData с $ расширения производятся следующее сообщение об ошибке:
DbIsOfExpression requires an expression argument with a polymorphic result type that is compatible with the type argument.
Я не уверен, что я делаю неправильно, и Google не делает действительно показывают многое позади этой ошибки. Все ссылки на проект хороши, и все остальные запросы OData работают так, как ожидалось.
Здесь находятся соответствующие модели данных:
public class ViewLink
{
public string OverrideLinkName { get; set; }
public string OverrideDescription { get; set; }
public bool IsActive { get; set; }
public int ViewLinkID { get; set; }
public Nullable<int> ViewID { get; set; }
public Nullable<int> LinkID { get; set; }
public Nullable<int> CreatedByID { get; set; }
public virtual View View { get; set; }
public virtual Link Link { get; set; }
}
public partial class View
{
public Nullable<int> SchoolID { get; set; }
public string ViewName { get; set; }
public int ViewID { get; set; }
public Nullable<int> ViewTypeID { get; set; }
public Nullable<int> TeacherID { get; set; }
public virtual ViewType ViewType { get; set; }
}
public partial class ViewType
{
public string TypeName { get; set; }
public Nullable<int> Priority { get; set; }
public int ViewTypeID { get; set; }
}
Ошибка возникает при попытке использовать следующий OData запрос:
http://apilinkhere.com/api/viewlink?$top=1&$expand=View/ViewType
Is мне нужно что-то изменить? Я просто хочу, чтобы меня вели в правильном направлении за тем, что я делаю не так, и приходят к пониманию того, что здесь происходит. Я не хочу продолжать эту ошибку в будущих проектах.
Если есть что-то еще, что необходимо, я сделаю все возможное, чтобы произвести его.
EDIT:
Я использую Web API OData.
Связано ли это с «ASP.NET Web API OData»? Существует также «Служба данных WCF», которая отличается, было бы хорошо указать это в вашем вопросе. –
Это предполагает, что по крайней мере один тип имеет подтипы, которые вы должны явно запрашивать. –