EF SaveChanges()背后发生了什么

时间:2013-04-10 12:46:14

标签: c# .net entity-framework entity-framework-4 ado.net

假设我有一个域对象,它与其他几个实体(当前映射到多个表)有关联。我在主要和相关实体上进行了更改。当然EF必须在保存时在多个表中更新它。

无论是ObjectContext还是DbContext,对SaveChanges()方法的调用都会告诉Entity Framework“将在此上下文中所做的所有更改保存到底层数据库。”

有人能告诉我“SaveChanges()背后发生了什么”?

是否所有生成的sql语句INSERT / UPDATE / DELETE都作为预处理语句一次性进入数据库?

或者EF是否与DB一起来回执行sql语句?

EF中是否有任何配置可在此间切换?

2 个答案:

答案 0 :(得分:1)

目前,CUD操作的语句不是批处理的。我们有一个work item来解决这个问题。随意upvote

答案 1 :(得分:0)

根据我的理解,每个修改后的实体将导致数据库的往返(全部由单个事务绑定)。虽然我不知道任何会改变这种行为的配置,但我不会说没有EF实现可以实现这种“批处理”功能。我只是认为它们没有开箱即用。