オブジェクトが添付されていないと確信していてもオブジェクトを追加できません。別のコンテキストEF4は、添付されていないと確信していても、コンテキストにオブジェクトを追加できません。
私はPOCOオブジェクトでEF 4を使用しています。私は
_currentContext.ObjectStateManager.GetObjectStateEntry(entityIn)
をしようとした場合
は、その後、私はそれがありません十分な
The ObjectStateManager does not contain an ObjectStateEntry with a reference to an object of type 'System.Data.Entity.DynamicProxies.OrderItem_7D361CB49D75AA90681B4BA3F924139ECB0FC1426E38E90C7B884A4E9CD777DF'.
フェアエラーが発生します。私はそれを
_currentContext.AttachTo("OrderItems", entityIn)
を添付しようとするのであればそれから私はどのように私は両方のエラーを取得することができます
An entity object cannot be referenced by multiple instances of IEntityChangeTracker.
を取得します。彼らは矛盾しない?どのように私は文脈にそれを付けることができますか?
編集
アプリ全体で一つだけのコンテキストがあります。パターンは
- です。リポジトリオブジェクトによるすべての呼び出しです。
- オブジェクトは、そのオブジェクトコンテキストをファクトリクラスから取得します。
- このファクトリクラスので、あなたはコンテキストオブジェクトの2つのインスタンスのハッシュコードを取る場合にのみコンテキストが1つの任意の時点でのページのライフサイクル
のために使用されている保証コンテキストを作成したり、要求オブジェクトからコンテキストを取得し、いずれかそれぞれが同じです。
OrderItem(または他のエンティティ)を参照しようとしましたが、同じキーを持つOrderが既に添付されていますか?それから、このような問題が発生する可能性があります:http://stackoverflow.com/questions/7938728/objectstatemanager-trygetobjectstateentry-returns-false-for-attached-object/7938909#7938909 – Slauma
Order @Slaumaの良い推測です。私のスキーマ(ジョーク)を見たことがありますか?おそらくそれはおかげです。しかし、これは、根本的な注文が既に添付されている場合に、この問題を引き起こす可能性がある場合、どのように注文アイテムを添付することができるかを考えています。私は何か明白なものを欠いているのですか –
添付されたOrderがOrderItemによって参照されるOrderと同じオブジェクトであれば問題ありません。しかし、このエラーは、あなたが接続されているOrder(hash = x、key = 1)と同じキー(hash = y、key = 1)を持つ別のOrderオブジェクトを持っていることを示します。これをお持ちの場合、基本的には、(OrderItemで参照されている)分離されたOrderを添付されたOrderで置き換えるか、OrderItemからOrderへの参照をnullに設定する必要があります。私の推測も間違っている可能性があります。もし 'IEntityChangeTracker'の複数のインスタンスに関するこのエラーが本当に私のリンクされた答えと同じ理由を持っているのかどうかはわかりません。 – Slauma