問題タブ [wcf-data-services-client]
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.
entity-framework - WCF Data Services でエンティティを部分的に更新するにはどうすればよいですか
WCF Data Services 5.5 を介してエンティティの一部を更新する方法を探しています。エンティティ全体のいくつかのフィールドを更新するだけです。
いくつかの方法を見つけました。
context.AttachTo(...);
and を使用してエンティティ全体を更新できcontext.UpdateObject(tp);
ますが、エンティティのすべてのフィールドが更新されます。一部のフィールドのみを更新したいと思います。RequestPipeline
次のブログで説明されているように、いくつかのロジックを追加し、更新してはならないフィールドを削除します。hooks-in-wcf-data-services-client.aspxリクエストを手動で作成します。
これを行う他の方法はありますか?System.Data.Services.Client.DataServiceContext
部分的な更新を有効にするように構成する方法はありますか?
c# - 不正な要求 (WCF データ サービス)
CRUD 操作には WCF Data Service を使用しました。1 つのリモート サービスと多数のクライアント (コンピューター) があります。一部のクライアントは、すべての編集操作でエラーを受け取りました (コンテキストにはエンティティがあり、現在それを編集しています)。返された例外には、次のメッセージが含まれています:「ブラウザが未知のメソッド (MERGE) でリクエストを送信しました」。すべてのクライアントは、Framework 4.5 で Windows 7 を使用します。この理由は何ですか?
サービスには初期化メソッドがあります。
UPD1:クライアント アプリケーションを管理者アカウントで実行すると、エラーが消えることがわかりました (つまり、管理者はエラーなしでエンティティを編集できます)。おそらく ClickOnce 配置の問題です。
UPD2:プロキシ サーバーを使用する理由。研究は続く…
c# - WCF Data Services クライアント:提供された T ジェネリック型と Func に基づいて一致するエンティティを選択する方法は?
WCF Data Services/Odata クライアント ライブラリを使用しています。Northwind サンプル OData ストア ( http://services.odata.org/Northwind/Northwind.svc/ ) をターゲットにすると、次の手順で製品を取得できます。数量が 50 より大きい:
私の質問は、この操作を実行する必要がある汎用クラスが必要だとしますが、取得するエンティティ (この場合は製品) と同じエンティティに対する条件 (UnitsInStock > 50) をハードコーディングする代わりに、エンティティ オブジェクト/名前と Func としての条件。私が望むのは、架空のGetEntityType関数が提供された T からエンティティを推測する次のクラスのようなものを持つことでしたが、残念ながら GetEntityType は存在せず、同じタスクを達成する方法が見つかりませんでした:
アップデート:
次のように使用できる CreateQuery メソッドを見つけました。
しかし...
1. データ型に関連付けられた文字列エンティティ名を取得する方法が見つかりません。Tからプログラムで取得する方法はありますか?
2. URI ジェネレーターは、関数を使用してエンティティをフィルター処理する場合に問題があるようです。そのため、代替手段についてさらに調査する必要があります。提案は大歓迎です
更新 2: エンティティ文字列名は、リフレクションを使用して取得できます。
それを行うための別の推奨される方法があれば、共有してください。
サービスからエンティティを取得する条件を動的に提供する方法をまだ探しています。
c# - Windows ストア アプリ用の WCF Data Service Client のインストール中にエラーが発生しました
Windows ストア アプリを使用しています。私は WCF Data Services のバックエンドを持っています。サービスを追加しようとすると、WCF Data Services Client をインストールしてhttp://msdn.microsoft.com/en-us/jj658961にリンクする必要があるというエラーが表示されます 。
ダウンロードした後、インストールしようとすると、次のエラーが表示されます: 0x800b0101 - 現在のシステム クロックまたは署名済みファイルのタイムスタンプに対して検証するときに、必要な証明書が有効期間内ではありません。
エラーが発生したログセクションを提供します。
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to verify certificate chain policy status.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to get certificate chain for authenticode certificate.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to verify signature of payload: wcf_dataservices
[2EBC:16AC][2013-10-11T11:52:07]: Failed to verify payload: wcf_dataservices at path: D:\ProgramData\Package Cache.unverified\wcf_dataservices, error: 0x800b0101. Deleting file.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to cache payload: wcf_dataservices
[2094:1F08][2013-10-11T11:52:07]: Failed to cache payload: wcf_dataservices from working path: D:\Users\TMACON~1.BAL\AppData\Local\Temp{1dff3448-2deb-42be-a710-36bfc79c5d5c}\wcf_dataservices, error: 0x800b0101.
[2094:1F08][2013-10-11T11:52:07]: Application requested retry of payload: wcf_dataservices, encountered error: 0x800b0101. Retrying...
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to verify certificate chain policy status.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to get certificate chain for authenticode certificate.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to verify signature of payload: wcf_dataservices
[2EBC:16AC][2013-10-11T11:52:07]: Failed to verify payload: wcf_dataservices at path: D:\ProgramData\Package Cache.unverified\wcf_dataservices, error: 0x800b0101. Deleting file.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to cache payload: wcf_dataservices
[2094:1F08][2013-10-11T11:52:07]: Failed to cache payload: wcf_dataservices from working path: D:\Users\TMACON~1.BAL\AppData\Local\Temp{1dff3448-2deb-42be-a710-36bfc79c5d5c}\wcf_dataservices, error: 0x800b0101.
[2094:1F08][2013-10-11T11:52:07]: Application requested retry of payload: wcf_dataservices, encountered error: 0x800b0101. Retrying...
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to verify certificate chain policy status.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to get certificate chain for authenticode certificate.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to verify signature of payload: wcf_dataservices
[2EBC:16AC][2013-10-11T11:52:07]: Failed to verify payload: wcf_dataservices at path: D:\ProgramData\Package Cache.unverified\wcf_dataservices, error: 0x800b0101. Deleting file.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to cache payload: wcf_dataservices
[2094:1F08][2013-10-11T11:52:07]: Failed to cache payload: wcf_dataservices from working path: D:\Users\TMACON~1.BAL\AppData\Local\Temp{1dff3448-2deb-42be-a710-36bfc79c5d5c}\wcf_dataservices, error: 0x800b0101.
[2094:0708][2013-10-11T11:52:07]: Error 0x800b0101: Failed while caching, aborting execution.
どの証明書が必要か、このエラーで問題を解決するにはどうすればよいか、誰か説明してもらえますか?
ありがとう。
c# - DataServiceContext.SaveChanges() のイベントまたはフックはありますか
WCF Data Services クライアントには組み込みのプロパティ レベル変更トラッカーがないため、独自のプロパティ変更トラッカーを作成しました。
呼び出し元が を呼び出した後DataServiceContext.SaveChanges()
、追跡された変更済みプロパティ コレクションをクリアしたいと考えています。 SaveChanges() がいつ呼び出されたかを知ることができるイベントやフックが表示されません。派生した DataServiceContext で基になる SaveChanges() を非表示にするよりもきれいにこれを行うことができる、欠落しているイベントまたはフックはありますか?
c# - WCF Data Services クライアントで「タイプ 'full.name' に設定可能なプロパティがありません」を回避するにはどうすればよいですか?
カスタムエンティティクラスでWCF Data Services 5.6を使用しており、Catelの ModelBaseから継承するエンティティにデータを正常に読み込んでいます。ただし、挿入または更新を実行しようとすると、Data Service によって使用されるリフレクションが、セッターを持たないインターフェイスを実装する ModelBase の読み取り専用プロパティ「ValidationContext」の 1 つで失敗します。ValidationContext には、Catel 内で定義された [XmlIgnore] 属性と [Browsable(false)] 属性の両方があります。
Configurations.RequestPipeline.OnEntryStarting および OnEntryEnding フックの両方でプロパティを削除しようとしましたが、WritingEntry イベントで xml を編集する(古い学校の) メソッドも使用しました。ただし、これらのイベントのいずれかがトリガーされる前に、以下の例外が発生します。
そのため、Data Services クライアントはシリアル化を試行する前に型を反映しているように見え、IValidationContext をモデル内の有効なエンティティ型として解釈できないため、そこでエラーを吐き出しています。
私がテストに成功した回避策の 1 つは、公開されている ModelBase プロパティを公開されていないバージョンに効果的に置き換えることです。
しかし、これは明らかに受け入れられません。なぜなら、ValidationContext を他の場所で使用できないからです。
これは、エンティティの対応する部分クラス コードにこのようなプロパティを追加する場合、「サービス参照の追加」によって生成されたプロキシにも問題があると思います。
何かアドバイス?関連する Serializer メソッドのいずれかを置き換える/オーバーライドすることはできますか?
タイプ 'Catel.Data.IValidationContext' には、設定可能なプロパティがありません。ソース: System.Data.Services.Client.ClientEdmModel.GetOrCreateEdmType(Type タイプ) の Microsoft.Data.Services.Client System.Data.Services.Client.Metadata.ClientTypeUtil.TypeIsEntity(Type t、ClientEdmModel モデル) System.Data .Services.Client.ODataPropertyConverter.TryConvertPropertyValue(ClientPropertyAnnotation プロパティ、オブジェクト プロパティ値、HashSet
1 visitedComplexTypeObjects, ODataValue& odataValue) at System.Data.Services.Client.ODataPropertyConverter.PopulateProperties(Object resource, String serverTypeName, IEnumerable
1 プロパティ) System.Data.Services.Client.Serializer.WriteEntry(EntityDescriptor entityDescriptor, IEnumerable`1 relatedLinks, ODataRequestMessageWrapper requestMessage) で System.Data.Services.Client.BaseSaveResult.CreateRequestData(EntityDescriptor entityDescriptor, ODataRequestMessageWrapper requestMessage) で System.Data .Services.Client.BaseSaveResult.CreateChangeData(Int32 インデックス、ODataRequestMessageWrapper requestMessage) System.Data.Services.Client.BatchSaveResult.GenerateBatchRequest()
で System.Data.Services.Client.BatchSaveResult.BatchRequest() で System.Data.Services. System.Data.Services.Client.DataServiceContext.SaveChanges() の Client.DataServiceContext.SaveChanges(SaveChangesOptions オプション)