問題タブ [odata-v4]

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.

0 投票する
2 に答える
447 参照

.net - Simple.Odata.Client を使用して Odata V4 サービスに接続すると例外が発生する

同じサービスとローカルの Odata サービスを使用してクライアントを odata V4 サービスに接続する最も単純なシナリオを動作させるために何時間も費やしましたが、クライアントは接続を拒否しました。クライアントの「セッション」変数で、以下の session.Adapter 例外を取得し続けます。

私は何が欠けていますか??

var client = new ODataClient(" http://packages.nuget.org/v1/FeedService.svc/ ");

var packages = client .FindEntriesAsync("Packages?$filter=Title eq 'Simple.OData.Client'");

アダプター = 'odataClient._session.Adapter' がタイプ 'System.InvalidOperationException' の例外をスローしました

0 投票する
1 に答える
763 参照

c# - Simple.OData.Client を使用して、オブジェクトとそのオブジェクトへの関係を 1 つのバッチで作成する

Simple.OData.Client を使用して 1 つのバッチでオブジェクトとリレーションシップを作成したいのですが、どうすればこれができるかわかりません。バッチ処理を使用しなくても、次のことができます。

しかし、これをバッチに入れようとすると、まだ作成されていないため、最初の呼び出しの戻り値を使用して子を作成できなくなります。オブジェクトの作成に使用したのと同じデータを使用しようとしましたが、これは機能しません。サーバーの create rel メソッドで null キーを与えるだけです。

データベースでは、データを挿入するときにリレーションシップを設定する必要があるため、これをバッチで行う必要があるため、1 つのデータベース トランザクションで行う必要があります。

これは Simple.OData.Client で可能ですか? そうでない場合、一般的にODataで可能ですか?

0 投票する
2 に答える
1403 参照

odata - Web API 2 Odata V4 PATCH リターン 404

私はこのコントローラを持っています:

GET が機能し、結果を取得して並べ替えることもできます。しかし、PATCH リクエストを実行すると、404 エラー、PATCH リクエストが発生します。

リクエスト URL: http://localhost:61240/odata/InvRecipientAutoInvoice(RecipientNumber%3D443%2CRecipientType%3D400)

  • 応答本文:

{ "エラー":{ "コード":"","メッセージ":"要求 URI に一致する HTTP リソースが見つかりませんでした ' http://localhost:61240/odata/InvRecipientAutoInvoice(RecipientNumber=443,RecipientType=400) ' .","innererror":{ "メッセージ":"コントローラー 'InvRecipientAutoInvoice' で、要求に一致するアクションが見つかりませんでした。","type":"","stacktrace":"" } } }

  • リクエスト本文:

ASP.net Web プロジェクト (MVC ではない) で使用していますが、

レジスタは次のとおりです。

私は何が欠けていますか?

0 投票する
1 に答える
3269 参照

c# - OData クライアントを単体テストする方法は?

サーバーで Web Api OData v4 を使用し、クライアントでOData Client コード ジェネレーターを使用しています。正常に動作しますが、クライアントでコードをテストする方法がわかりません。

サーバー上で「Levels」dbSet を公開します。

クライアントのスニペット コードは次のとおりです。

T4 テンプレートによって生成された odata コンテナーをコンストラクターのパラメーターとして受け入れて、何らかの方法でモックできるようにします。

単体テスト、ここで私は迷っています:

したがって、この単体テストでは、GetRootLevels メソッド内のロジックのみをテストしたいだけです。統合テストやセルフ ホスティング サービスは作成したくありません。メモリ内データを使用してメソッドをテストしたいだけです。

実際には DataServiceContext クラスである OData クライアント生成クラスをモックするにはどうすればよいですか?

私はMoqを使用していますが、それは何でもかまいません(無料または少なくともVSプロフェッショナル版に含まれています)

編集:これがODataContainerの実装です(これはOdataクライアントによって自動生成されることに注意してください)

0 投票する
1 に答える
1028 参照

exception-handling - OData WebApi 2 エラー処理

私の Web サービスでは、ExceptionHandler をオーバーライドしますが、OData エラー標準に適合するように例外をフォーマットする方法が明確ではありません。オンラインで例が見つからないため、おそらく私は間違った方法でアプローチしています。

私の理解では、web api 2 には、カスタム ExceptionHandler を使用してサービスでスローされた例外を処理するグローバル例外処理の概念があります。例外は、新しい IHttpActionResult() で ExceptionContext.Result を更新することが引き続き期待されます。IHttpActionResult に入力したデータをどのようにフォーマットして、OData エラーにフォーマットしますか。

以下は ExceptionHandler のスニペットです。正しい OData HttpResponse メッセージで context.Result をオーバーライドする方法に行き詰まっています。

アドバイスありがとうございます、ありがとう、D