$ развернуть не работает. Записи Associate / Child не возвращаются в результате. [ОБНОВИТЬ] - PullRequest
0 голосов
/ 10 мая 2018

Надеюсь, у вас все хорошо.

Ну, я создал webApi, используя c #. Ниже приведен код, который генерирует результат из "../../$metadata" (внизу изображения)

enter image description here

В настоящее время я жестко запрограммировал результат, поэтому он всегда должен отправлять Заказчику и связанный с ним продукт, ниже приведен код:

        public EdmEntityObjectCollection Get()
    {
        IEdmEntityType customerType = (IEdmEntityType)ODataUntypedSample.Model.FindType("NS.Customer");
        IEdmCollectionType collectionType = Request.ODataProperties().Path.EdmType as IEdmCollectionType;
        EdmEntityObjectCollection collection = new EdmEntityObjectCollection(new EdmCollectionTypeReference(collectionType));

        EdmEntityObject customer1 = new EdmEntityObject(customerType);
        customer1.TrySetPropertyValue("CustomerId", CUSTOMER1id);
        customer1.TrySetPropertyValue("FullName", "Jony Mark One");
        collection.Add(customer1);

        EdmEntityObject customer2 = new EdmEntityObject(customerType);
        customer2.TrySetPropertyValue("CustomerId", CUSTOMER2id);
        customer2.TrySetPropertyValue("FullName", "Pole Sam two");
        customer2.TrySetPropertyValue("Products", GetChildProduct());
        collection.Add(customer2);

        return collection;
    }

    private static EdmEntityObjectCollection GetChildProduct()
    {
        IEdmEntityType productType = (IEdmEntityType)ODataUntypedSample.Model.FindType("NS.Product");

        IEdmCollectionTypeReference entityCollectionType
                        = new EdmCollectionTypeReference(new EdmCollectionType(new EdmEntityTypeReference(productType, isNullable: false)));
        EdmEntityObjectCollection ec = new EdmEntityObjectCollection(entityCollectionType);

        EdmEntityObject product1 = new EdmEntityObject(productType);
        product1.TrySetPropertyValue("ProductId", 99);
        product1.TrySetPropertyValue("CustomerIdRef", CUSTOMER2id);
        ec.Add(product1);

        EdmEntityObject product2 = new EdmEntityObject(productType);
        product2.TrySetPropertyValue("ProductId", 88);
        product2.TrySetPropertyValue("CustomerIdRef", CUSTOMER2id);
        ec.Add(product2);

        return ec;
    }

Когда я просматриваю URL, используя «$ expand», он возвращает только данные о клиентах, но не возвращает данные о дочерних / ассоциированных продуктах. Кто-нибудь может объяснить, почему он так себя ведет?

запрос: http://localhost:12345/odata/Customers?$expand=Products
Результат:

[{"CustomerId":11,"FullName":"Jony Mark One"}, 
 {"CustomerId":22,"FullName":"Pole Sam two"}]
...