2012-11-05 30 views
2

我有一个关于使用实体框架将新记录保存到数据库的小问题。在实体框架中保存新记录

这里的代码:

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

我的问题是:如果1 2的_context.AddTo失败,因此调用SaveChanges将被终止,否则它将保存一个成功???我赞赏任何答案:)

+1

只有在您的上下文中调用savechanges()之后,它才会保存。保存更改会将挂起的更改保留到数据库中,因此只有在您调用该方法之后,更改才会注册到数据库。如果发生异常并且代码提前终止,则根本不会保存任何更改。 –

回答

2

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

+0

更具体地说,'SaveChanges'在“Transaction”中完成所有工作。如果在该方法的任何地方出现错误,则“事务”被回滚。 –