问题:我需要在多表插入中取回一个身份,并且我需要在 Entity Framework 中围绕它包装事务支持。
我有两个(伪通用)对象和对应的表,书和作者:
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 insert 引发异常,我有一个没有书的作者,这对我的应用程序不利.
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 一起使用,并建议每次操作调用一次 SaveChanges() 并让 EF 自己处理事务。我很乐意,但我需要先从表中取回身份,就像我的伪代码和这个 SO question中所示