2012-02-12 6 views
1

Entity Frameworkで自分のエンティティに行を挿入しようとしました。最初の挿入操作には有効ですが、2回目の挿入操作では機能しません。私はフレームワーク4、C#とFireBirdデータベースを使用します。これは、呼び出し元)私の第二のSaveChanges(後にこの例外を与える私のコードの一部エンティティフレームワークの挿入が機能しません。非典型的なエラー

rec = new T_MEDIAPLAN_REC(); 
// 
//... initialization for T_MEDIAPLAN_REC 
// 
BossTVEntities.AddToT_MEDIAPLAN_REC(rec); 
BossTVEntities.SaveChanges(); 

です:

"The changes to the database were committed successfully, but an error occurred 
while updating the object context. The ObjectContext might be in an inconsistent 
state. Inner exception message: AcceptChanges cannot continue because the 
object's key values conflict with another object in the ObjectStateManager. 
Make sure that the key values are unique before calling AcceptChanges." 

私は、データベースを参照してくださいしようと試みました。異なるIDを持つターゲットエンティティに2つの挿入されたレコードがあります。だから、私はそのような行動の理由を知らない。

私はそれは、データベース内のすべてのエンティティのために動作しないのVisual Studio 2010 SP1のプロフェッショナル、.NETプロバイダ、C#2.5のFirebird、.NET Frameworkの4.0

を使用しています。

+0

ご質問の詳細をご記入ください。 –

+0

詳細は何ですか? –

答えて

6

このエラーは通常、データベースにプライマリキーが生成されたが、EFが正しく構成されていない場合に発生します。挿入後にデータベースから値を読み取って戻します。結果として、両方の挿入された項目がEFコンテキストで空のキーとなり、エラーが発生します。

挿入されたデータのキーがデータベースに異なるため、DBスキーマが正しいように見えます。 EDMを確認して、PK列のStoreGeneratedPatternIdentityに設定されていること、またはFirebirdに含める必要があるものを確認する必要があります。

+0

ありがとうございます。私の問題を解決する正しい方法を教えてくれました。 –