Entityフレームワークを使用する方法を学習しようとしていますが、解決できない問題が発生しました。 私がやっていることは、私が持っている映画のリストを歩いていて、それぞれを単純なデータベースに挿入していることです。私は私が読んで()db.SaveChangesで例外を取得し、これを行うと .NET EntityフレームワークでSaveChangesを呼び出すときにInvalidOperationExceptionが発生する
この
は私がprivate void AddMovies(DirectoryInfo dir)
{
MovieEntities db = new MovieEntities();
foreach (DirectoryInfo d in dir.GetDirectories())
{
Movie m = new Movie { Name = d.Name, Path = dir.FullName };
db.AddToMovies(movie);
}
db.SaveChanges();
}
を使用しているコードです。データベースへ
変更が正常にコミット あったが、オブジェクト コンテキストを更新中にエラーが発生しました 。 ObjectContextが に矛盾した状態である可能性があります。内部例外 メッセージ:オブジェクトのキー値 が ObjectStateManager内の別のオブジェクトと競合するため、AcceptChangesは続行できません。 AcceptChangesを呼び出す前に、 のキー値が一意であることを確認してください。
私はこの問題の原因を見つけることができませんでした。 私のデータベーステーブルには3つの列が含まれてい
Idをint型の自動インクリメント
名前NCHAR(255)
パスNCHAR(255)
アップデート:私は私のEDMXファイルとSSDLセクションがStoreGeneratedPattern = "アイデンティティ" としてを持ってチェック 提案する。私はブログのポストに続き、CSAにClientAutoGenerated = "true"とStoreGenerated = "true"を追加しようとしました。これにより、コンパイルエラーが発生しました(エラー5: 'ClientAutoGenerated'属性は使用できません)。ブログ投稿は2006年のもので、フォローアップの投稿へのリンクがあるので、変更されていると思います。
しかし、msdnアカウントが必要なので、フォローアップ投稿を読むことはできません。
私の答えは、プロパティの[StoreGeneratedPattern = "Identity"]を設定することでした[詳細はこちら](http://www.matthewedmondson.info/2012/09/entity-framework-and。 html)。 –
また、INSERT、UPDATE、DELETEにSotredProcedureマッピングを使用し、IDキーがSP内で計算されたキーである場合に発生します。 –