2012-10-27 53 views
3

我有一個導入過程,從舊來源獲取數據並將其放入表存儲中,這使我可以重新初始化表存儲並根據需要重新開始。在更新到十月份的Azure SDK for .NET(VS2012)之前,它正在工作。現在,插入一些實體後它失敗了(它看起來不一樣,導入的數據本質上不是靜態的)。相同類型的第一個實體始終插入成功。分區鍵是唯一的,每個RowKey都是空字符串(而不是爲空)。它在SaveChangesWithRetries()上沒有具體規定。新SDK中是否有任何更改與我之前的操作不兼容?表存儲(模擬器)插入失敗,並顯示「其中一個請求輸入無效」。

更新

我已經通過查詢表存儲數據庫檢查成功插入的行實際的XML。我注意到的一件事是,實體上的一個可爲空的int列在SqlType nvarchar(max)爲空時爲空,而在空值爲空時爲int。這是打算?

+0

這是發生在模擬器中嗎?或者在真實的存儲帳戶上? –

+0

在模擬器上。 –

回答

8

所以,我已經能夠在一致的基礎上成功地重現錯誤,並且事實證明這是在2012年10月SDK中引入的一個非常討厭的錯誤。

任何以空格結尾的字符串都會導致異常被拋出。對所有字符串輸入調用Trim()已解決此問題。

1

這顯然是模擬器的問題之一。您可能知道,它模擬SQL Server中的表存儲。這在大多數情況下都適用,但是當你嘗試做一些特殊的事情,比如添加額外的屬性或者在你的情況下,簡單地在屬性中混合可爲空和不可爲空的值時,事情往往會變糟糕。

This頁面解釋了實際的表存儲服務和模擬器中的實現之間的差異。但是你的問題似乎還沒有被記錄下來。你會發現很多關於Table Storage模擬器問題的報告(這裏也在StackOverflow上)。

您唯一的解決方案是使用真實存儲帳戶開發而不是使用模擬器。

+0

這是如此常見的情況,如果模擬器無法處理它,它肯定是一個錯誤。緩存預覽也會不斷泄漏內存。這些開發工具需要一些愛微軟。 –

+0

我只是浪費了兩天這個問題。我正在將數據從生產轉移到開發,並且一直花費在試圖弄清楚爲什麼它不起作用。在我剛開始的時候,我注意到了一些問題,當我的數據有一個空間時,但我從來沒有想象過這個問題可能存在。對我來說,這似乎是一個可能影響每個天藍色開發者的問題。 – 2012-11-09 11:34:56

相關問題