0

私は自己追跡エンティティを使用しており、次のことを行います。

1.-新しいエンティティを作成します

2.-そのプロパティの1つを変更します(例:entityName = "Dummy")

変更後もエンティティの状態は変更されていないため、applychangesを実行すると何でも実行されます。

状態を変更済みに設定しようとすると、変更がデータベースに保存されます。しかし、このように問題があります。間違っていない場合、STEはINotifyPropertyChangedインターフェイスを実装するため、プロパティを変更すると通知されます。これは私が望んでいる機能です。

私は間違っていますか?おそらく、プロパティを変更しても、エンティティの状態は変更されません。

ありがとう。ダイムロック。

編集:この問題は、EF4.0を使用してクエリの結果をデータベースに送信するWCFサービスを使用するときにエンティティを取得するときにも発生します。

EDIT2:エラーが見つかりました。

問題は、ttファイルと自己追跡エンティティを含むdllプロジェクトがあることです。

このプロジェクトへの参照があるWCFサービスがあります。このサービスは、EFを使用してデータベースにアクセスするリポジトリを使用します。

WCFサービスをホストするセルフホストアプリケーションがあります。このアプリケーションには、STEを含むdllへの参照がありません。

svcutilを使用してservice.csを作成します。

service.csを追加するクライアントがあります。service.csがSTEを使用したdllプロジェクトのクラスをどのように持っているか。しかし、問題があります。このクラスには、このクラスのすべてが含まれているわけではありません。たとえば、ChangeTrackerプロパティはありますが、MarkAsメソッドなどはありません。

したがって、service.csを編集して、クラスが宣言されている名前空間を変更し、STEクラスを含むプロジェクトへの参照を追加すると、すべてのメソッドにアクセスでき、期待どおりに機能します。

したがって、問題は私のdllプロジェクトのSTEクラスではなく、私のサービスの「STEクラス」にあります。

service.csを生成すると、「完全なクラス」が生成されないのはなぜですか?これにより、STEを使用してdllプロジェクトへの参照を追加し、service.csを編集して、期待どおりに機能しないSTEクラスを含むコードを削除します。service.csファイルに「優れたSTEクラス」を含める方法はありますか?

ありがとう。ダイムロック。

問題は、WPFアプリケーションでホストしているWCFサービスがあることです。セルフホストアプリケーションを実行し、svcutilを使用してService.csを作成します。

このService.csをクライアントアプリケーションに追加します。このService.csには私の存在があります

4

1 に答える 1

2

あなたの説明はあまりにも紛らわしいです。

STEは、サービスとクライアントを緊密に結合します。STEを使用する唯一の正しい方法は、STEを配置してアセンブリを分離し、このアセンブリをクライアントとサービス間で共有することです。svcutil.exeを使用してクライアントアプリケーションのサービス参照を作成する場合、reference新しい非STEタイプを作成する代わりに、パラメーターを使用してタイプ解決用のアセンブリを指定できます(サービス参照を追加するためのVS UIは同様の構成を提供します)。

于 2012-05-05T13:00:35.280 に答える