OData 6.0 缺少 ODataEntityTypeSerializer
OData 6.0 missing ODataEntityTypeSerializer
我正在尝试将 OData 包 (Microsoft.AspNet.OData
) 从 v5.9 升级到 v6.0,但我的代码中断了,因为我有一个扩展 ODataEntityTypeSerializer
的 class。
我在对象浏览器中搜索它,它已被删除。当我回到 v5.9.1 时它可以工作。
在新的 6.0 版本中是否有 ODataEntityTypeSerializer
的替代品,或者这只是一个兼容性问题?
我派生的 class 是一种防止 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);
}
}
}
UPDATE (jul/18): SingleResult.Create()
生成此解决方法的问题已在 v7.0 中修复,不再需要这样做。检查 https://github.com/OData/WebApi/issues/170
根据https://odata.github.io/WebApi/#07-18-6-0
您应该使用 ODataResourceSerializer。
在这里查看相同的问题:https://github.com/OData/WebApi/issues/995
您调用此方法获取 IServiceProvider:https://github.com/OData/WebApi/blob/master/src/System.Web.OData/Extensions/HttpRequestMessageExtensions.cs#L234
并且还需要一个自定义的 IContentNegotiator
我正在尝试将 OData 包 (Microsoft.AspNet.OData
) 从 v5.9 升级到 v6.0,但我的代码中断了,因为我有一个扩展 ODataEntityTypeSerializer
的 class。
我在对象浏览器中搜索它,它已被删除。当我回到 v5.9.1 时它可以工作。
在新的 6.0 版本中是否有 ODataEntityTypeSerializer
的替代品,或者这只是一个兼容性问题?
我派生的 class 是一种防止 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);
}
}
}
UPDATE (jul/18): SingleResult.Create()
生成此解决方法的问题已在 v7.0 中修复,不再需要这样做。检查 https://github.com/OData/WebApi/issues/170
根据https://odata.github.io/WebApi/#07-18-6-0 您应该使用 ODataResourceSerializer。
在这里查看相同的问题:https://github.com/OData/WebApi/issues/995
您调用此方法获取 IServiceProvider:https://github.com/OData/WebApi/blob/master/src/System.Web.OData/Extensions/HttpRequestMessageExtensions.cs#L234
并且还需要一个自定义的 IContentNegotiator