私はEntityFramework4.1でデータベースファーストアプローチに取り組んでいます。私は2つの多対多の関連エンティティBookとLibraryを持っています。また、BOOKエンティティとLIBRARYエンティティの両方と1対多の関係を持つ、ライブラリ内の本の特定のコピーに関する情報を格納するための10列のジャンクションテーブルが1つあります。BookVieMOdelの定義に一致する子オブジェクトを含むJSONオブジェクトを送信するビューを作成しました。ビューは正常に機能していますが、コントローラーのジャンクションテーブルに新しいエントリを追加するのに問題があります。「削除済み状態のエンティティとの関係の追加は許可されていません」というエラーが表示されます。エラーは、削除されたオブジェクトを参照しているbook.LibraryBookCopies.Clear();
と思いますが、他の方法でそれを行うことは考えられません。
ありがとう、
コントローラ:
[HttpPost]
public ActionResult Edit(BookViewModel bookv)
{
Mapper.CreateMap< BookViewModel,Book>();
Book book = Mapper.Map<BookViewModel,Book>(bookv);
db.Books.Attach(book);
db.ObjectStateManager.ChangeObjectState(book, EntityState.Modified);
//Add library ref to each libraryBookCopies object in Book
foreach (LibraryBookCopy lBC in book.LibraryBookCopies)
{
lBC.Library = db.Libraries.Single(l => l.LibraryId == lBC.LibraryId);
}
//Remove all currently related records
book.LibraryBookCopies.Clear();
//Add copies from ViewModel to book object
foreach (LibraryBookCopy lBC in bookv.LibraryBookCopies)
{ book.LibraryBookCopies.Add(lBC); //Error here }
db.SaveChanges();
return RedirectToAction("Index");
}