這個實體框架調用實際上是兩次訪問數據庫嗎?實體框架 - 在DeleteObject上有多少次數據庫訪問
var result = from p in entities.people where p.id == 6 select p;
entities.DeleteObject(result);
它讓我覺得,也許DeleteObject會強制第一次旅行得到結果,然後,讓對象使用,將執行刪除功能。
如果是這樣的話,我該如何避免第二次旅行?如何在單個數據庫之旅中通過實體框架進行查詢刪除?
謝謝!
編輯
我原來的例子是誤導,因爲它是通過主鍵查詢。我想真正的問題是,是否有一種方法可以使用可以從IQueryable中刪除項目的單行程功能。例如:
var result = from p in entities.people where p.cityid == 6 select p;
foreach (var r in result)
{
entities.DeleteObject(r);
}
(注意查詢是外鍵,所以可能有多個結果)。
這已被問 - 此答案http://stackoverflow.com/questions/869209/bulk-deleting-in-linq-to-entities/870081#870081鏈接到文章描述如何實現批量更新'UPDATE ... SET ... WHERE ...'的形式,你應該能夠適應創建'DELETE ... WHERE ...'查詢。 – hvd 2012-01-15 22:42:59