2013-02-25 36 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的不明確的版本來實現相同的。

相關問題