Вложенные объекты в ASP. NET ядре ODATA с открытыми типами - PullRequest
0 голосов
/ 16 января 2020

Использование открытых типов в ODATA v4 в соответствии с https://docs.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/use-open-types-in-odata-v4 работает в случае неизвестных свойств, которые фактически представляют простые типы, такие как double, string или ints.

Использование полезной нагрузки, подобной следующей, в функции создания

{
    "Name": "Test",
    "Email": "test@test.com",
    "a": 1,
    "b": 2
}

со свойствами a и b в качестве динамических c свойств легко возможно. Соответствующий класс выглядит следующим образом:

public class Press
{
    public string Name { get; set; }
    public string Email { get; set; }
    public IDictionary<string, object> DynamicProperties { get; set; }
}

Однако по мере добавления сложных динамических свойств c, которые имеют вложенные свойства (сравните свойство c в приведенном ниже примере), приложение дает ошибка:

{
    "Name": "Test",
    "Email": "test@test.com",
    "a": 1,
    "b": 2,
    "c": {
            "c1": 1,
            "c2": 2
         }
}

Приложение возвращает неверный запрос 400 со следующими сведениями:

{
    "errors": {
        "": [
            "The input was not valid."
        ]
    },
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "|9156f208-4d4617d06ecf82f9."
}

Есть ли способ создать определения открытого типа с ASP. NET ядром ODATA который принимает также объекты с вложенными свойствами?

...