2009-12-22 66 views
1

與實體組事務衝突我目前正在寫一個方法,該方法,以降低交易成本,實體插入到Azure Table中服務於100處理Azure中

插入的實體批是不可變的。即如果PartitionKey和RowKey在兩個entitiy-object之間是相同的,則意味着所有其他屬性都相同。因此,我將永遠不需要對此表進行更新,因爲插入後實體將保持不變。

我面臨的問題是,此批內我不能肯定100%,沒有一個實體的以前沒有插入。因此,如果我只是正常插入實體(通過AddObject和SaveChanges),事務可能會失敗,並顯示實體無法添加的錯誤,因爲它已經存在。由於交易是原子的,這意味着沒有任何實體被添加。

我不能檢查事務中的每個實體的存在,因爲那將是過於昂貴(每單位一個查詢費用太高,並使用一個單一的查詢或導致表整個表掃描)。因此,我需要一些方法來添加一個對象,如果它不存在,而忽視它或更新,如果存在的話(忽略或更新將是我也一樣,因爲entitites是不可改變的)。

如何在Azure Table中服務實現這一目標?

回答

2

根據this article目前還沒有到「UPSERT」的實體,如果它已經存在的一種方式。目前的建議是使用多個工作角色和多個線程檢查每個實體的存在來處理請求。

+0

自九月中旬2011年,作爲微軟表示BUILD大會上,該操作的Upsert在Azure中實現。 – 2011-09-26 15:42:47