2014-09-05 2 views
0

Когда я пытаюсь использовать запрос 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.

+0

Связано ли это с «ASP.NET Web API OData»? Существует также «Служба данных WCF», которая отличается, было бы хорошо указать это в вашем вопросе. –

+0

Это предполагает, что по крайней мере один тип имеет подтипы, которые вы должны явно запрашивать. –

ответ

0

Какая связь между View и ViewType? В вашем коде кажется, что ViewType является навигационным свойством View. Если это так, запрос должен быть ...? $ Expand = View ($ expand = ViewType).

+0

ViewType - свойство навигации. Я попытался выполнить ваш запрос, но получил следующую ошибку: «Term» View ($ expand = ViewType) »недействителен в выражении $ select или $ expand." –

+0

Извините, я скучаю по «?» в ответ. Я отредактировал его. И если возникнут дополнительные проблемы, вы можете обратиться к http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/SelectExpandDollarValueSample/. Это дает подробную страницу реализации и запроса URL-адресов $ select и $ expand. – QianLi

Смежные вопросы