問題タブ [asp.net-web-api-odata]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-web-api - odata サービスの URL のサフィックス ".svc"
これはばかげた質問かもしれません。私が目にするほとんどの例では、ルート URL に.svc
常にサフィックスがあるため、ODATA サービスのサフィックスについて少し混乱しています。例:.svc
http://services.odata.org/V4/Northwind/Northwind.svc/
または、ODATA ドキュメントの例でも:
ASP.NET Web Api で ODATA を構築する場合、サフィックス.svc
は実際には必須ではないことがわかりました。ルーティング構成で必要に応じて追加できます。
では、ODATA サービスを構築するためにルート URL に接尾辞を追加する目的は何ですか?それとも.svc
、これが ODATAサービスであることを指定するための規則にすぎませんか?
rest - OData クエリ: 列の条件に基づいて複数の行を取得する
属性フィールドとそれに対応する値を保持するテーブルがあります。インスタンスにはいくつかの属性が適用可能であり、このインスタンスの特定の属性セットを返したいと考えています。
Odata を使用してクエリを実行し、属性 A と C およびそれらに対応する値を取得するにはどうすればよいですか?
今のところ、 で 1 行しか取得できません$filter=endswith(Attribute, 'A')
。
c# - スキップして MongoDB リポジトリから取得しようとすると、オーバーフロー ソート ステージのバッファリングされたデータの使用量
リポジトリ パターンの MongoDB ベースの実装を呼び出す従来の REST および ODATA 対応の Web API コントローラーがあります。
私は取得し続けます
33556193 バイトのオーバーフロー ソート ステージ バッファー データ使用量が 33554432 バイト例外の内部制限を超えています
最初の 12010 件以上のレコードをスキップして上位 10 件を取得しようとすると
いくつかの検索の後、シリアルのようなインデックスを実装しようとしました
私のリポジトリの実装はこのようなものです。
サービス層からの呼び出しはこのようなものです
ここで、SNDbContext には、MongoClient と接続文字列を使用してデータベースを取得することに関連するすべてのコードが含まれています。
asp.net-web-api - MapODataServiceRoute なしで $inlinecount を使用
あるエンティティの IQueryable を返すコントローラー 1継承フォーム ApiController があります。
同じものを返す別のコントローラー2がありますが、このようなODataControllerおよびoDataルート構成から継承されます
http://localhost:xxxx/api/Controller1 ?$inlinecount=allpages&$top=0を実行しようとすると、空白の json オブジェクトの結果が表示されます
http://localhost:xxxx/api/Controller2 ?$inlinecount=allpages&$top=0を実行しようとすると、odata.count = 100 で適切な結果が得られます
私の質問は、コントローラー 1 の場合に何が問題なのですか?
最終的には、カウントのみを取得しようとしています。
asp.net-web-api-odata - デフォルトの ODataMediaTypeFormatters が構成に追加されないようにする方法はありますか?
標準の ODataMediaTypeFormatters の動作をカスタマイズしようとしていますが、MediaTypeFormatter を拡張する別の型でそれらをラップすることで実現しました。例えば
WebAPI 構成メソッドが実行された後、config.Formatters には 12 の項目が含まれます (そのうちの 7 つはラップされたフォーマッターです)。
ただし、応答がシリアル化されている場合、config.Formatters には 17 個の項目が含まれます。これは、標準の OData フォーマッタがある時点で再度追加されたためです。次に、ラップされたバージョンよりも、関連する標準フォーマッタが優先して使用されます。
この再追加がいつ発生し、それを防ぐことができるかどうか、またはどのように防ぐことができるかを誰かが知っていますか?
.net - OData $select を使用して、関連するオブジェクトからフィールドを選択します
OData V4 で WebAPI 2.2 を使用しています。
$filter=RelatedObj/PropertyName eq 'Some Value'
関連するオブジェクトのプロパティ値に基づいて、エンティティのリストをフィルター処理するために使用できます。
ただし、同じ構文を使用しようとすると$select
:
例外が発生します:
これは解決できますか?
c# - asp.net Web API での @odata.bind のサポート (投稿中の既存のエンティティへのリンク)
WCF データ サービスから Web API odata v4 への移行に非常に苦労しています。私は次の問題で立ち往生しています:
odata Web API は @odata.bind をサポートしていないようです。
次のリンクを見つけました:
https://github.com/OData/WebApi/issues/158ODataEntityDeserializer
誰かが次のような独自の派生クラス
を実装することを提案しました:
LinkedEntityCollection は、辞書として機能するエンティティ クラスの基本クラスです (MyEntity : LinkedEntityCollection
実装は簡単です)。
http 構成への登録:
ただし、このハックを使用すると、次の記事で説明されているようなエンティティ間のリンクを作成する機能が失われます: http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/ odata-v4/entity-relations-in-odata-v4
「@odata.id」は解析されず、関数内のエンティティであると見なされますODataEntityDeserializer.Read
。私はWeb APIにかなり慣れていないので、ここで根本的に何かが欠けているのかもしれません(config.Formatters.Clear()
少し厳しいようです)。または、@odata.bind をサポートする他の回避策はありますか?
この機能が近い将来実装される可能性はありますか?
アップデート
ハックが機能しました。問題は、代わりに派生ExtendedODataDeserializerProvider
して、それに応じてデシリアライザーを返す必要があることでした:DefaultODataDeserializerProvider
ODataDeserializerProvider
残る問題: asp.net webapi odata で @odata.bind がサポートされるのはいつですか?