問題タブ [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.

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

odata - OData 4 を使用した WEB API 2 の関連コレクションへの POST

次のようなルートが必要です。

ここで POST を実行して注文を作成できます。WebApi で OData を使用してこのルートを追加する方法が見つかりません。GET の場合、関連するコレクションを取得するために従う規則がありますが、関連するコレクションに新しいエンティティを投稿するための規則を見つけることができません。

この POST リクエストを Web API 2 と OData 4 で処理する標準的な方法はありますか?

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

asp.net-web-api - コードで (オプションの) ナビゲーション プロパティ (?$expand=) をどのように定義しますか?

最初に説明と要点、次に質問です。そう:

コードAccountView生成されたクラスが

次に、同じ名前空間 ( Entities)に部分クラスを作成します。

そしてWebApiConfig、次のように、OData v4(WebApiを使用した最新の6.9.0.0シリーズ、これも最新)で何かを書く、またはしようとします

結果$metadataは次のようになります

質問:コメントで述べたようにTODO、どのように定義すればよいですか?

  • http://example.com/Accounts?$expand=Companyor http://example.com/Accounts?$Companies?を呼び出すことができるナビゲーション プロパティ。

今私が呼び出すと動作します

  • http://example.com/Accountsまた
  • http://example.com/Accounts(someId)

次に、次のようなことをすると

  • http://example.com/Accounts?$expand=Companies
  • http://example.com/Accounts?$expand=Companyまた
  • http://example.com/Accounts(someId)?$expand=Company

HTTP 400 (?$expand=Companies) またはHTTP 500 (?$expand=Company) で迎えられます。

Containment私はすでに関係を築くことに成功しました。ただし、ルート エンティティを ID で定義する必要があるように見えますが、ルートに「GET」を提供し、オプションで「子リスト」オブジェクトに展開したい (したがって、?$expand= に関するこの質問) .

今のケースでは、expand1 つのエンティティに対して 1 つのオプションではない処理を行っていますが、次に希望するのは、エンティティ (またはこの特定の例に関しては企業) のリストがあるシナリオですが、どうすればこれらを達成できるのでしょうか?シナリオ?最初の常に存在するサブオブジェクトに展開するこのケースでも修正するにはどうすればよいですか?

私のコントローラーは次のように定義されています

私が基本的にやろうとしているのは、最初にデータベース、edmx、ビューにいくつかのメタデータを追加し、記事Using $select, $expand, and $value in ASP.NET Web API 2 ODataを模倣することです。これまでのところ成功していません...

<編集 1:いわばプロットが厚くなります。HTTP 500 エラーは、次のような内部例外 (マネージド フレームワーク例外への中断を有効にする必要がありました) から発生します。

タイプ 'System.NotSupportedException' の初回例外が EntityFramework.dll で発生しました

追加情報: 指定された型メンバー 'Company' は、LINQ to Entities ではサポートされていません。初期化子、エンティティ メンバー、およびエンティティ ナビゲーション プロパティのみがサポートされています。

したがって、はい、AccountViewビューであり、テーブルへの直接の外部キー関係はありませんCompany(たまたまテーブルですが、ビューでもある可能性があります)。どうすれば追加できますか?情報によって証明されるように、私はメタデータを追加することですでにトリックを行っていました$metadata。ODataINNER JOINはデータベースに を書き込むだけではありませんか? ここで何か不足していますか?...これは、Company参照を追加した方法に関連しているようで、EFはそれが好きではありません。ODataモデルのみに追加する必要があるようです...

<編集 2:表の定義の大文字と小文字を一致させるために toAccountView CompanyIdを変更しても (少なくとも私が持っている設定では) 違いはないようです。CompanyIDCompany

<edit3:これに関連する別の質問をしました。How to add complex properties on a model built with an ODataConventionModelBuilder from an EF model .

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

c# - 起動時の OData v4 エラー: セグメント 'Whatever' のリソースが見つかりません

新しい v4 サービスを構築していますが、新しいモデル/エンティティ用の新しいコントローラーを追加し、テスト実行のためにサイトを起動するときにこのエラーが発生するまで、すべてがうまくいっていました。

コントローラーは、他のコントローラーと同様に、正しくコーディングされているようです。

コントローラー 'CustomersOData' のアクション 'GetFeed' のパス テンプレート 'Customers' は、有効な OData パス テンプレートではありません。セグメント「顧客」のリソースが見つかりません。

それは一体何を意味するのでしょうか?

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

asp.net-web-api - デルタの使用複雑なオブジェクトで

Delta<T> は、単一のオブジェクトではなく、複雑なオブジェクト グラフで使用できますか? 私はそれを使用しようとしましたが、何かが欠けているのか、それとも単に機能がサポートされていないのか疑問に思っています。

たとえば、次のモデルがあります。

OData モデルの構築は次のとおりです。

コントローラーの POST メソッドでは、この JSON を使用でき、正常に逆シリアル化されます。

しかし、PATCH を使用すると問題が発生します。これを送ると:

そして、私のコントローラーメソッドの署名は次のようになります。

次に、デルタには Address プロパティが含まれ、City と PostCode は null、Street は「Another Street」になります。これは私には正しいようです。

次に delta.Patch(person) を使用して person オブジェクトに変更を適用すると、住所の Street プロパティを更新するだけでなく、この住所を個人に大規模にコピーします。

何か不足していますか、それとも複雑な型のプロパティのパッチは Delta<T> でサポートされていませんか?

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

entity-framework - WCF Data Services から WebApiOdata への移行

現在、WCF Data Services から WebApiOData への移行を検討しています。私が見ている問題は、クライアントからクエリする必要があるすべての単一のテーブル/ビューに対して、webApi コントローラー内にメソッドを作成する必要があることです。エンティティ モデルは、かなりの数のテーブルを含む edmx で定義されます。edmx にテーブルを追加し、odata.svc を介して直接クエリを実行できるようにする標準の odata.svc が 1 つあると便利でした。ビューまたはテーブルを edmx に追加するたびにメソッドを追加する必要があるのは悪夢です。 50 を超えるテーブル/ビューについて話している場合、どこでもメソッドが混乱するだけです。

edmx のすべてのテーブル/ビューに対してクエリを実行できるグローバルな get メソッドを定義するコントローラーを 1 つだけ持つためのより簡単な戦略はありますか? それとも、すべてのメソッドを作成する必要がありますか?

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

entity-framework - Edmx で WebApi + Odata を使用する

現在、Odata を使用して WCF Data Services から WebApi に変換することを検討しています。エンティティ モデルは、edmx として定義されたエンティティ フレームワークを使用して定義されます。関係と複雑なプロパティのために、edmx を WebApi OData で動作させるのに苦労しています。

誰かがより大きなサイズのedmx(関係もある)にodataを使用してwebAPIを正常に実装したかどうか疑問に思っていますか?どんなアドバイスも素晴らしいでしょう。

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

asp.net-web-api - $expand の OData クエリ オプション $count が機能しない

このクエリのように $expand で $countを使用しようとしました

ただし、count は結果のどこにもありません。

エラーもありません。OData v4 を使用している ASP.NET Web API OData 5.4 を使用しています。

何を与える?まだ実装されていませんか?