Updating/Inserting multiple rows using jQuery and OData (WCF Data Services) -


मेरे पास तीन तालिकाओं, खाका, फ़ील्ड और टेम्पलेटफ़िल्ड हैं I TemplateFields प्रत्येक टेम्पलेट के लिए चयनित क्षेत्रों रखती है जब फ़ील्ड का चयन करना उपयोगकर्ता समाप्त हो जाता है तो मुझे टेम्पलेटफ़िल्ड अपडेट करना होगा। मैं ऐसा करने के लिए देख सकता हूँ एकमात्र तरीका है कि टेम्पलेट के लिए सभी TemplateFields को हटाने और फिर उन्हें एक अलग अनुरोधों में एक के बाद जोड़ें। यह वाकई बहुत बुरा है क्योंकि लेनदेन का लेन-देन नहीं है और इसमें कई अनुरोध भी होंगे।

क्या डब्लूसीएफ डाटा सर्विसेज का इस्तेमाल करते हुए एक से अधिक 'ऑब्जेक्ट' जोड़ने का एक तरीका है? डेटाबेस को अपडेट करने के लिए मैं एक इंटरसेप्टर का उपयोग कर सकता हूं।

इस आलेख को देखें " जोड़ना / बनाना डेटा / OData / WCF डेटा सेवा बैच के लिए समझाया ":

अपडेट:

< पी> लेख में स्थानांतरित हो गया है:

टिप्पणियों में अनुरोध के अनुसार पोस्ट से उद्धृत

  1. सेवा

      System.Collections.Generic का उपयोग कर; System.Data.Services का उपयोग कर; System.Linq का उपयोग कर; System.ServiceModel.Web का उपयोग कर; System.Web का उपयोग कर; System.Linq.Expressions का उपयोग कर; System.Data.Services.Common का उपयोग कर; नेमस्पेस टेस्टएडवेंटवेयरकर्सडेटा सेवा {सार्वजनिक वर्ग साहसिकसेवा: डेटासेवा & lt; साहसिक कार्यकलाप समाप्त & gt; {// इस पद्धति को सेवा-चौड़ी नीतियों को प्रारंभ करने के लिए केवल एक बार कहा जाता है सार्वजनिक स्थैतिक शून्य प्रारंभिक सेवा (डेटासेवा कॉन्फ़िगरेशन कॉन्फ़िग) {// TODO: जो नियम सेट और सेवा संचालन दिखाई दे रहे हैं, अपडेट करने योग्य, आदि के लिए नियम सेट करें। उदाहरण: config.SetEntitySetAccessRule ("*", EntitySetRights.All); // config.SetServiceOperationAccessRule ("MyServiceOperation", ServiceOperationRights.All); Config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; Config.UseVerboseErrors = false; } सुरक्षित ओवरराइड शून्य हैंडलएक्सेप्शन (हैंडलएक्सेप्शनएआरजीएस एआरजीएस) {नया डेटासेसेएक्सेशन (एल्ग्स.एक्सैप्शन.इनरएक्सेशन। मेसेज, आरजीएसएक्सैप्शन); }}}  
  2. ग्राहक

      सिस्टम का उपयोग कर; System.Collections.Generic का उपयोग कर; System.Linq का उपयोग कर; System.Text का उपयोग कर; System.Data.Services.Client का उपयोग कर; नामस्थान क्लाइंट {Client.AdventureWorksServiceReference; क्लास प्रोग्राम {निजी स्थिर एडवर्ड्स वर्क्स एंटीटीज _ कन्वेंशन = नल; स्थिर शून्य मुख्य (स्ट्रिंग [] एआरजी) {_context = नया एडवेंचर्स वर्क्स एंटीटीज़ (नया उरी ("http: //ipv4.fiddler: 51824 / AdventureService.svc")); Var उत्पाद 1 = उत्पाद। तैयार उत्पाद (0, "मेरा टेस्ट उत्पाद 1", "1234", सच, सत्य, 1, 1, 100, 200, 3, दिनांक समय.अब, नया गिड ("E29C16AE-908A-4F53-8E19- DC2CFDDF08A0 "), डेटटाइम.Now); Var उत्पाद 2 = उत्पाद। बनाना उत्पाद (0, "मेरा टेस्ट प्रोडक्ट 2", "5678", सच, सत्य, 1, 1, 200, 300, 3, दिनांक समय.अब, नया मार्गदर्शक ("1 बी 9 68 9 डी 6-सीसीएफएफ -40 सी 3-एएएफएफ- 1AC3C5951738 "), डेटटाइम.Now); Var उत्पाद 3 = उत्पाद। तैयार उत्पाद (0, "मेरा टेस्ट उत्पाद 3", "9876", सच, सत्य, 1, 1, 300, 400, 3, दिनांक समय.अब, नया मार्गदर्शक ("{0B677FB4-890E-4FAF-AD6A -7477 डी 5703 ई 6 ई} "), डेटटाइम.Now); Var संग्रह = नया डेटासेवा कलेक्शन & lt; उत्पाद & gt; (_ प्रसंग); collection.Add (उत्पाद 1); collection.Add (PRODUCT2); collection.Add (product3); _context.SaveChanges (); Console.Read (); // अगली बार इस ऐप को चलाने के लिए अद्वितीय बाधा को रद्द करने के लिए उत्पादों को हटा दें: संग्रह। निकालें (उत्पाद 1); collection.Remove (PRODUCT2); collection.Remove (product3); _context.SaveChanges (SaveChangesOptions.Batch); कंसोल.प्रकाश लाइन ("हटाए गए। क्षमा करें, मेरे दिमाग को बदल दिया!"); Console.Read (); }}  

जहां क्लाइंट कोड में निम्नलिखित सबसे महत्वपूर्ण टुकड़ा है:

  _context.SaveChanges (SaveChangesOptions .Batch);  

Comments