3

質問: 複数テーブルの挿入で ID を取得する必要があり、Entity Framework でトランザクション サポートをラップする必要があります。

対応するテーブル Book と Author を持つ 2 つの (疑似汎用) オブジェクトがあります。

create table Author
(authorid int identity primary key,
authorname varchar(max)
)

create table Book
(bookid int identity primary key,
bookname varchar(max),
authorid int references Author(authorid)
)

私の問題は、新しい著者の新しい本を挿入する必要がある場合、最終的にこのようなことをする必要があり、Book の挿入で例外がスローされた場合、アプリケーションに適していない Book のない Author があることです。 .

context.Authors.Add(newauthor);
context.SaveChanges();
newbook.AuthorID = newauthor.ID //I can read this now because the SaveChanges() created the ID
context.Books.Add(newbook);
context.SaveChanges();

基本的にEntityFrameworkでトランザクションを使用しないように述べ、操作ごとに 1 回 SaveChanges() を呼び出し、EF がトランザクションを単独で処理できるようにすることをお勧めするこの記事をざっと読みました。したいのですが、疑似コードとこのSOの質問に示されているように、最初にテーブルからIDを取得する必要があります

4

2 に答える 2