在Entity Framework中保存新记录

4

我在使用Entity Framework保存新记录时遇到了一些小问题。

这里是代码:

using (_context)
                {
                    _context.AddToStudent(newStudent);
                    _context.AddToStudentInfo(newStudentInfo);
                    _context.SaveChanges();                   
                    return true;
                }

我的问题是:如果2个_context.AddTo中的1个失败了,那么SaveChanges会终止还是只保存成功的一个?我感激任何回答 :)

1
只有在上下文中调用savechanges()后,才能保存更改。Savechanges将挂起的更改持久化到数据库中,因此在调用该方法之前,更改不会注册到数据库中。如果发生异常并且代码提前终止,则根本不会保存任何更改。 - yu_ominae
1个回答

3

SaveChanges()方法会将所有未执行的操作全部执行,或者不执行(例如出现错误)。 因此,在这种情况下,如果newStudentInfo对象中出现错误(例如未设置必需属性),则newStudentInfo和newStudent都不会保存到数据库中。


更具体地说,SaveChanges 在一个 Transaction 内完成其所有工作。如果在方法的任何地方出现错误,则会回滚 Transaction - Bradley Uffner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接