2017-02-01 3 views
2

ODataパッケージ(Microsoft.AspNet.OData)をv5.9からv6.0にアップグレードしようとしていますが、ODataEntityTypeSerializerというクラスが拡張されています。OData 6.0にODataEntityTypeSerializerがありません

これをオブジェクトブラウザで検索して削除しました。私がv5.9.1に戻ると、それは機能します。

新しい6.0バージョンでODataEntityTypeSerializerの代替品がありますか、これは互換性の問題ですか?

私の派生クラスは、null値のシリアル化を防ぐ方法です。 私は新しいプロバイダをnullthis 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); 
      } 
     } 
    } 
+0

カスタムIContentNegotiatorが必要@OPを管理しました? – gorillapower

+0

私はまだv5.9にあります – Pagotti

答えて

1

https://odata.github.io/WebApi/#07-18-6-0 によると、あなたはODataResourceSerializerを使用する必要があります。ここでは、同じ問題で

+0

v6.0.0に良いニュース - ありがとう! – Pagotti

+0

あまり良くない... =)。私は新しい 'シリアライザ'に移行しますが、サービスプロバイダを必要とする 'DefaultODataSerializerProvider'コンストラクタを変更します。 [ここで作業する](http://odata.github.io/WebApi/#10-02-workaround-for-singleresult-create)はもう動作しません。新しい修正を探す... – Pagotti

+1

新しいバージョンでは、すべてのプロバイダを依存関係注入によって追加する必要があります。あなたの場合は、次のようになります: '' config.MapODataServiceRoute( "odata"、 "api"、builder => builder.AddService(ServiceLifetime.Singleton、sp => edmModel) .AddService (ServiceLifetime.Singleton 、 sp => new YourODataSerializerProvider(sp))); '' – Cibergarri

関連する問題