У меня проблемы с получением сериализованного сложного объекта.Я нашел несколько примеров по этому вопросу, и мне нужна помощь.У меня есть класс POCO, который реализует интерфейс для свойства класса, как показано ниже ...
- Проблема заключается в ... OData не может сериализовать IObjectState Свойство
КАК СДЕЛАТЬ ODATA AWARE СЛОЖНЫХ ТИПОВ В СВОЙСТВАХ?
- Пожалуйста, имейте в виду, что IObjectState является классом не-сущности и не имеет ключа
POCO CLASS:
public class ShakeoutDocument : Document, IDocument, IStateful
{
public IObjectState ObjectState { get; set; } //<-- This property contains the instance (below)
public int ShakeoutId { get; set; }
public string SchedulingBatch { get; set; }
[...] //<-- Other properties are omitted for brevity
}
Свойство IObjectState CLASS: Вот пример конкретного класса IObjectState ...
// Example of an IObjectState Instance
public class New : IObjectState
{
public List<IObjectStateEvent> Events { get; set; }
public string Name { get; set; }
}
КОНФИГУРАЦИЯ EDM: Как ОБЪЕДИНЕННАЯ Функция: Использование этой конфигурации модели EDM & Api ...
modelBuilder.EntitySet<ShakeoutDocument>("ShakeoutDocument");
[HttpGet]
public ShakeoutDocument Get([FromODataUri] int id)
{
var provider = Application.ShakeoutDocumentProvider as ShakeoutDocumentProvider;
var entity = provider.Get(id);
return entity;
}
Генерирует следующее исключение ...
"Данная модель не содержит тип" New "."
КОНФИГУРАЦИЯ EDM: В качестве РАЗБЛОКИРОВАННОЙ Функции: Использование этой конфигурации модели EDM & Api ...
var getShakeoutDocument = modelBuilder.Function("GetShakeoutDocument").ReturnsFromEntitySet<ShakeoutDocument>("ShakeoutDocument");
getShakeoutDocument.Parameter<int>("id");
[ODataRoute("GetShakeoutDocument(id={id})")]
public IHttpActionResult GetShakeoutDocument([FromODataUri] int id)
{
var provider = Application.ShakeoutDocumentProvider as ShakeoutDocumentProvider;
var entity = provider.Get(id);
return Ok(entity);
}
Создает следующее исключение ...
"Данная модель не содержит тип" New "."
ОБНОВЛЕНИЕ КОНФИГУРАЦИИ EDM: с бетоном Новое: Обновление конфигурации модели EDM с помощью ...
modelBuilder.AddComplexType(typeof(New));
Создает следующее исключение ...
"Обнаружено значение, имя которого несовместимо с метаданными. Значение указывает его тип как «Новый», но в метаданных указан тип «IObjectState». "
Любая помощь приветствуется.