2013-02-25 76 views
2

不是一个非常有经验的EF人,所以我想问问这位专家。更新实体框架集合的最有效方法是什么?

我有一个实体调用“申请人”。申请人可以有许多“申请”。

我有一个典型的方法来搜索申请人。如果申请人存在,它会被更新,否则会被添加。同时在这两种情况下添加新的应用程序。

我有2种方法,我可以这样做:

1)创建或更新申请人和单独创建一个应用程序随即。 2)创建或更新申请人,但将申请添加到(申请人的)申请集合中。

我与选项2有关的问题。当我从数据库中检索申请人并且它存在时,然后将我的新应用程序添加到其收藏夹中。当我更新申请人时,是否对其集合中的每个项目进行更新,还是足够智能以知道我只添加了1个新应用程序?换句话说,我是否正在进行不必要的数据库往返访问?

希望它是有道理的。

使用EF 4.3.1。

在此先感谢。

+0

这里已经讨论[尝试这种] [1] [1]:http://stackoverflow.com/questions/5557829/update-row-if-it-exists-else-insert-logic-with-实体框架 – Niventh 2013-02-25 11:23:45

回答

1

不,它不会更新集合中的每个现有项目。 它只会发送您添加到集合中的新项目。

为了更好地了解EF发送的SQL查询的内容,您可能需要查看使用ORM分析器。

你的选择是EFProfOrmProfiler

或者,如果你想跳过付费选项,你可以使用linqpad或SQL Server Profiler工具(如果您有SQL Server的不明确的版本来实现相同的。

相关问题