ODataQueryOptionParser не может найти свойство по типу - PullRequest
0 голосов
/ 09 июля 2020

Я вижу это сообщение об ошибке, что свойство не может быть найдено с помощью $expand запроса OData, но я могу подтвердить, что $metadata свойство существует.

Не удалось найти свойство с именем 'name 'on type' MyNS.Organization '

Вот URL-адрес конечной точки odata, вызывающей ошибку: /odata/entity?$expand=organization($select=primaryName)

В моем урезанном коде я использую параметр OData синтаксический анализатор, чтобы попытаться проанализировать select / expand, представляющий этот запрос:

var query = new Dictionary<string, string> { { "$expand", "organization($select=name)" } };
var parser = new ODataQueryOptionParser(model, model.FindDeclaredType("MyNS.Entity"),
    model.FindDeclaredEntitySet("Entities"), query);
var selectExpand = parser.ParseSelectAndExpand(); // throws error

Мне нужно вручную построить мою модель с нетрадиционным подходом ( ссылка ). Я попытался определить тип «Организация» как ComplexType или EntityType с той же проблемой.

Вот мои метаданные модели (edmx).

<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
    <edmx:DataServices>
        <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="MyNS">
            <EntityType Name="Entity">
                <NavigationProperty Name="organization" Type="MyNS.Organization"/>
            </EntityType>
            <ComplexType Name="Organization">
                <Property Name="name" Type="Edm.String"/>
            </ComplexType>
            <EntityContainer Name="Container">
                <EntitySet Name="Entities" EntityType="MyNS.Entity"/>
            </EntityContainer>
        </Schema>
    </edmx:DataServices>
</edmx:Edmx>

Я не знаю, чего мне здесь не хватает, поэтому спасибо за любую помощь или руководство.

...