【发布时间】:2013-04-10 12:46:13
【问题描述】:
假设我有一个与其他几个实体关联的域对象(当然映射到多个表)。我对主实体和关联实体进行了更改。自然,EF 必须在保存时在多个表中更新它。
无论是 ObjectContext 还是 DbContext,调用 SaveChanges() 方法都会告诉 Entity Framework “将在此上下文中所做的所有更改保存到底层数据库。”
谁能告诉我“SaveChanges() 背后发生了什么”?
所有生成的 sql 语句 INSERT/UPDATE/DELETE 是否作为准备好的语句一次性进入数据库?
还是EF和DB来回做sql语句一个一个的执行?
EF中是否有任何配置可以在这之间切换?
【问题讨论】:
-
你可以分析你的数据库,看看到底发生了什么
-
您可以使用Miniprofiler查看EF查询。
-
Kieren,当您学习/理解幕后发生的事情时,您可以编写高效的代码。例如,如果有一些选项,我会切换到准备好的语句模式,以在处理大量事务更新时提高性能。
-
如果你想真正了解幕后发生的事情,我建议你使用 .NET 反编译器来查看
System.Data.Entity程序集。 -
@TMcManemy EF6 在entityframework.codeplex.com 是开源的,因此无需反编译。只需克隆在 VS 中打开的 repo 并浏览、调试等。SaveChanges() 与 EF5 相比没有太大变化
标签: c# .net entity-framework entity-framework-4 ado.net