Использование открытых типов в 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 который принимает также объекты с вложенными свойствами?