【问题标题】:OData 6.0 missing ODataEntityTypeSerializerOData 6.0 缺少 ODataEntityTypeSerializer
【发布时间】:2017-02-01 13:07:49
【问题描述】:

我正在尝试将 OData 包 (Microsoft.AspNet.OData) 从 v5.9 升级到 v6.0 并且我的代码中断,因为我有一个扩展 ODataEntityTypeSerializer 的类。

我在对象浏览器中搜索它并被删除。当我回到 v5.9.1 时,它可以工作了。

在新的 6.0 版本中是否有替换 ODataEntityTypeSerializer 或者这只是兼容性中断?

我的派生类是一种防止null 值序列化的方法。 我写了新的提供者来处理null 基于this response on SO

 public class NullEntityTypeSerializer : ODataEntityTypeSerializer
    {
        public NullEntityTypeSerializer(ODataSerializerProvider serializerProvider)
            : base(serializerProvider)
        { }

        public override void WriteObjectInline(object graph, IEdmTypeReference expectedType, ODataWriter writer, ODataSerializerContext writeContext)
        {
            if (graph != null)
            {
                base.WriteObjectInline(graph, expectedType, writer, writeContext);
            }
        }
    }

更新(18 年 7 月): 生成此工作的 SingleResult.Create() 问题已在 v7.0 中得到修复,不再需要。检查https://github.com/OData/WebApi/issues/170

【问题讨论】:

  • @OP 你找到了一个替代品吗?
  • 我还在 v5.9 中
  • 在 v7.0 中修复了原始问题。检查问题。更新

标签: odata upgrade compatibility


【解决方案1】:

根据https://odata.github.io/WebApi/#07-18-6-0 您应该使用 ODataResourceSerializer。

【讨论】:

  • 不太好... =)。我迁移到新的Serializer,但他们更改了DefaultODataSerializerProvider 现在需要服务提供者的构造函数。 work arround here 不再起作用。正在寻找新的修复...
  • 在新版本中,您必须通过依赖注入添加所有提供程序。在你的情况下,它应该是这样的:config.MapODataServiceRoute("odata", "api", builder => builder.AddService(ServiceLifetime.Singleton, sp => edmModel) .AddService<ODataSerializerProvider>(ServiceLifetime.Singleton, sp=> new YourODataSerializerProvider(sp)));
  • 我看到 v6 在 MapODataServiceRoutethis page with information about DI in v6 上引入了一个新参数。我会努力想办法并实施它。
【解决方案2】:

在这里查看相同的问题:https://github.com/OData/WebApi/issues/995

你调用这个方法获取IServiceProvider:https://github.com/OData/WebApi/blob/master/src/System.Web.OData/Extensions/HttpRequestMessageExtensions.cs#L234

还需要一个自定义的 IContentNegotiator

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2023-04-06
    相关资源
    最近更新 更多