2012-01-02 9 views
0

の複数のインスタンスによって参照することができない私は、次のコードで編集コントローラのアクション(Httpost)を持っていますIEntityChangeTrackerのインスタンス 解決策を教えてください。ここでエンティティオブジェクトがIEntityChangeTracker

+1

'context'をどのようにインスタンス化して破棄しますか?リクエストごとに1つのコンテキスト、複数のリクエストごとに複数のコンテキスト、または複数のリクエストごとに1つのコンテキストがありますか? – Slauma

+0

私はすべてのリクエストに対して1つのコンテキストを持っています。 –

+0

@ Sluma複数の場合、どのようにコンテキストを破棄できますか?このコードを変更するには? –

答えて

4

は何が起こっているかである。

あなたmembershipServiceの実装では、あなたは人のエンティティを取得するには、コンテキストAを照会しています。その後UpdatePersonEmailに、あなたがこの問題を解決するには、いくつかの方法があり、コンテキストB.

に人を取り付ける

。最も単純なのは、おそらく、membershipServiceクラスのコンテキストAを照会するときに.AsNoTracking()を呼び出すことです。この方法では、サービスによって返さPersonエンティティは、コンテキストAに添付されません。

context.People.AsNoTracking().SingleOrDefault(p => p.UserName == userName); 

もう一つの方法は、UpdatePersonEmail方式の両方のクラスが同じコンテキスト・インスタンスを持つように、IoCコンテナを使用してコンテキストを注入することであろうmembershipServiceクラスとして宣言します。

関連する問題