2010-11-30 110 views
0

一旦調用每個Web服務方法,就需要在DB中插入一些數據:在請求處理的開始和結束時。如何更新對象的一部分

我的意圖是在請求處理開始時插入將包含所有收入信息的記錄,並在此之後更新同一記錄,一旦處理請求並準備好發回數據(或者發生錯誤並且我需要存儲錯誤消息)。

問題是,收入數據可能很長,並且LINQ to SQL在更新之前需要從DB獲取對象數據,然後再「存儲」它。在這種情況下,「收入數據」將進行3次:

  1. 第一次插入時 - 它進入DB;
  2. 對象更新之前的第二次 - 它從DB中獲取;
  3. 第三次更新 - 它將再次訪問DB。

如果我已經有從DB中提取的對象,那麼是否有可能優化這樣的過程?

是否適用於實體框架?它是否允許僅更新對象的部分?

回答

1

ORM適用於將完整行轉換爲完整對象,並再次返回 - 因此更新始終是完整對象。但是,Linq-to-SQL和實體框架都非常聰明,可以找出實體上哪些屬性發生了變化,所以如果只更新某些字段,則使用UPDATE生成的SQL命令將只更新那些改變了領域。

所以基本上:你就試試吧!啓動SQL分析器並查看SQL到數據庫的內容;在實體框架中,我肯定的是,如果您只更改了一些字段,那麼只有更改後的字段纔會在UPDATE語句中更新,而沒有其他內容。

+0

「試試」 - 好主意:)其實我會的!可能我還需要改進我的存儲庫實現,以便保留已獲取的對象以防止跳到DB(上面我的列表中的項目#2)。謝謝! – Budda 2010-11-30 23:00:36