Я реализовал REST API с использованием Microsoft.AspNet.OData (версия 7.1.0). Бизнес-модель содержит ObservableCollection, которая не сериализуется при использовании ODataController.
Если я сериализирую бизнес-модель с Newtonsoft, все свойства сериализуются, как и ожидалось.
Я искал способ настроить сериализацию, но не смог найти решение.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings();
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
config.Formatters.JsonFormatter.MaxDepth = 2048;
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
ODataModelBuilder builder = new ODataConventionModelBuilder();
var entitySet = builder.EntitySet<Product>("Products");
entitySet.EntityType.HasKey(entity => entity.RelationId);
config.UseCustomContainerBuilder(() => new MyContainerBuilder());
config.MapODataServiceRoute(
routeName: "odata",
routePrefix: null,
model: builder.GetEdmModel());
}
}
У меня вопрос: могу ли я заставить его работать, изменив некоторые настройки SerializerSettings, или мне придется настроить сериализацию?