OData WebApi .net - коллекция не сериализована - PullRequest
0 голосов
/ 27 марта 2019

Я реализовал 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, или мне придется настроить сериализацию?

...