में इकाई जोड़ें या बदलें, मैं विंडोज़ एज़ूर टेबल स्टोरेज के साथ काम कर रहा हूं और इसकी एक साधारण आवश्यकता है: उस विभाजन के साथ किसी भी मौजूदा पंक्ति को ओवरराइट करने के लिए एक नई पंक्ति जोड़ें। हालांकि, परिवर्तन हमेशा बचत एक अपवाद फेंकता है, भले ही मैं ReplaceOnUpdate विकल्प में पारित: इकाई पहले से मौजूदएज़ूर टेबल स्टोरेज
tableServiceContext.AddObject(TableName, entity);
tableServiceContext.SaveChangesWithRetries(SaveChangesOptions.ReplaceOnUpdate);
यदि यह फेंकता है:
System.Data.Services.Client.DataServiceRequestException: An error occurred while processing this request. ---> System.Data.Services.Client.DataServiceClientException: <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code>EntityAlreadyExists</code>
<message xml:lang="en-AU">The specified entity already exists.</message>
</error>
मैं वास्तव में मैन्युअल के लिए क्वेरी करने के लिए है मौजूदा पंक्ति पहले और DeleteObject
पर कॉल करें? यह बहुत धीमा लगता है। निश्चित रूप से एक बेहतर तरीका है?
धन्यवाद, मैंने उस पर विचार किया है, लेकिन इसका मतलब है कि इस कोड को प्रतिलिपि बनाने की आवश्यकता वाले प्रत्येक संपत्ति के बारे में पता होना चाहिए (या इकाई को स्वयं को 'कॉपीटो' विधि की आवश्यकता है) और जब भी गुण बदलते हैं तो उसे अद्यतन करने की आवश्यकता होती है। मुझे लगता है कि मैं हटाए जाने की लागत का भुगतान करना चाहता हूं और सुरक्षित रहूंगा। – EMP
ठीक है, मैं इसे करने के लिए समाप्त हो गया, जितना मैं नहीं चाहता था। इससे कोई फर्क नहीं पड़ता कि मैंने इकाई को हटाने और फिर से सम्मिलित करने का प्रयास कैसे किया, यह वास्तव में काम नहीं करता था - एक बार यह सफल होगा, अगली बार एक त्रुटि के साथ विफल हो जाएंगे, अगली बार किसी और के साथ विफल हो जाएंगे। – EMP
मुझे यह आश्चर्यजनक लगता है। क्या आप एक के हिस्से के रूप में दोनों ऐड और डिलीट को सहेजने की कोशिश कर रहे थे। सेव() कॉल, या आप कर रहे थे .ऑडऑब्जेक्ट(); ।बचाना(); .DeleteObject(); ।बचाना(); – knightpfhor