OData $expand выдает нечетную ошибку

Когда я пытаюсь использовать запрос OData с $expand, возникает следующая ошибка:

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

Есть ли настройка, которую мне нужно где-то изменить? Я просто хочу быть уведенным в правильном направлении за тем, что я делаю неправильно, и прийти к пониманию того, что здесь происходит. Я не хочу, чтобы эта ошибка продолжалась в будущих проектах.

Если есть что-то еще, что необходимо, я сделаю все возможное, чтобы произвести это.

РЕДАКТИРОВАТЬ:

Я использую веб-API OData.


person Ryan Duffing    schedule 05.09.2014    source источник
comment
Это касается ASP.NET Web API OData? Есть также WCF Data Service, который отличается, было бы хорошо указать это в вашем вопросе.   -  person Vojtěch Dohnal    schedule 06.09.2014
comment
Это говорит о том, что по крайней мере один тип имеет подтипы, которые следует запрашивать явно.   -  person Gert Arnold    schedule 06.09.2014


Ответы (1)


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

person QianLi    schedule 08.09.2014
comment
ViewType — это свойство навигации. Я попытался выполнить ваш запрос, но получил следующую ошибку: Термин «Вид($expand=ViewType)» недействителен в выражении $select или $expand. - person Ryan Duffing; 08.09.2014
comment
Извините, я пропустил ? в ответ. Я отредактировал его. А если возникнут дополнительные проблемы, вы можете обратиться к aspnet.codeplex. com/SourceControl/latest#Samples/WebApi/OData/ Здесь представлена ​​подробная реализация и URL-адрес запроса $select и $expand. - person QianLi; 09.09.2014