दिलचस्प पोस्ट
बाइनरी ट्री को कैसे कार्यान्वित करें? एसवीएन रिपॉजिटरी सर्च जावास्क्रिप्ट – फ़ाइल इनपुट नियंत्रण से फ़ाइल नाम निकालने का तरीका Xlsx को csv में लिनक्स कमांड लाइन में कनवर्ट करें क्लासिक एएसपी में JSON को पार्स करने के लिए कोई अच्छी लाइब्रेरी? Laravel 5 में निष्पादित क्वेरी कैसे प्राप्त करें? डीबी :: getQueryLog खाली सरणी लौट रहा है क्या मैं गठबंधन कर सकता हूँ: nth-child () या: एक मनमानै चयनकर्ता के साथ nth-of-type ()? CSS3 चेन एनिमेशन आगे की घोषणा क्यों आवश्यक है? वस्तुओं की एक सरणी में एक विशेषता का अधिकतम मान ढूँढना पायदेव और ग्रहण के साथ अनसुलझे आयात के मुद्दे Google मैप इन्फोलाइन इंडेक्स ठीक से नहीं दिखा रहा है पाठ-ओवरफ्लो: फ़ायरफ़ॉक्स 4 में एलीप्सिस? (और एफएफ 5) सी # में संरचना के लिए 16 बाइट की अनुशंसित आकार क्यों है? गतिविधियां के साथ लागू एंड्रॉइड नेविगेशन ड्रॉवर

वर्तमान में वेब एपीआई के साथ आंशिक अपडेट करने का सुझाव क्या है?

मैं सोच रहा हूं कि आंशिक अपडेट को एएसपी.नेट वेब एपीआई के शांत इंटरफ़ेस के साथ कैसे कार्यान्वित किया जाए? मान लीजिए उदाहरण के लिए हम निम्नलिखित संरचना के तार पर ऑब्जेक्ट पास कर रहे हैं:

public class Person { public int Id { get; set; } public string Username { get; set; } public string Email { get; set; } } 

एक समय में किसी Person के कुछ हिस्सों को अपडेट करने का समर्थन कैसे करेगा, उदाहरण के लिए Email संपत्ति? क्या यह ओडाटा और पैच क्रिया के माध्यम से कार्यान्वित करने के लिए सिफारिश की गई है, या क्या यह अपने आप को लागू करने के लिए बेहतर होगा?

Solutions Collecting From Web of "वर्तमान में वेब एपीआई के साथ आंशिक अपडेट करने का सुझाव क्या है?"

वेब एपीआई (अगस्त 2012 से) की वर्तमान नवीनतम स्थिर रिलीज में कोई समर्थन नहीं है इसलिए यदि आप उपयोग करना चाहते हैं तो वेब एपीआई आरटीएम है, तो आप को पूरी तरह से पाइपलाइन को लागू करना होगा।

इसके साथ ही, ओडेटा प्रीरेलेज पैकेज, नए Delta<T> ऑब्जेक्ट के माध्यम से आंशिक अपडेट का समर्थन करता है। वर्तमान में Microsoft.AspNet.WebApi.OData पैकेज पहले से ही आर सी संस्करण पर है (0.3) और यहां से प्राप्त किया जा सकता है: http://www.nuget.org/packages/Microsoft.AspNet.WebApi.OData

एक बार जब आप इसे स्थापित करते हैं, तब आप उस तदनुसार उपयोग कर सकते हैं:

 [AcceptVerbs("PATCH")] public void Patch(int id, Delta<Person> person) { var personFromDb = _personRepository.Get(id); person.Patch(personFromDb); _personRepository.Save(); } 

और आप इसे इस तरह से ग्राहक से कहते हैं:

 $.ajax({ url: 'api/person/1', type: 'PATCH', data: JSON.stringify(obj), dataType: 'json', contentType: 'application/json', success: function(callback) { //handle errors, do stuff yada yada yada } }); 

इस का स्पष्ट लाभ यह है कि यह किसी भी संपत्ति के लिए काम करता है, और आपको परवाह नहीं है कि क्या आप Email या Username या whatnot को अपडेट करते हैं

आप इस पोस्ट की जांच भी कर सकते हैं, क्योंकि यह एक बहुत ही समान तकनीक दिखाती है http://techbrij.com/http-patch-request-asp-net-webapi

संपादित करें (अधिक जानकारी): सिर्फ पैच का उपयोग करने के लिए, आपको ओडाटा से संबंधित कुछ भी सक्षम करने की आवश्यकता नहीं है, Delta<TEntityType> पैकेज को जोड़ने के अलावा – Delta<TEntityType> ऑब्जेक्ट तक पहुंच प्राप्त करने के लिए

आप ऐसा कर सकते हैं:

 public class ValuesController : ApiController { private static List<Item> items = new List<Item> {new Item {Id = 1, Age = 1, Name = "Abc"}, new Item {Id = 2, Age = 10, Name = "Def"}, new Item {Id = 3, Age = 100, Name = "Ghj"}}; public Item Get(int id) { return items.Find(i => i.Id == id); } [AcceptVerbs("PATCH")] public void Patch(int id, Delta<Item> item) { var itemDb = items.Find(i => i.Id == id); item.Patch(itemDb); } } 

यदि आपकी वस्तु है, तो कहें:

 { "Id": 3, "Name": "hello", "Age": 100 } 

आप पीटीसी को /api/values/3 साथ:

 { "Name": "changed!" } 

और वह आपके ऑब्जेक्ट को ठीक से अपडेट कर देगा।

Delta<TEntity> आपके लिए हुए बदलावों का ट्रैक रखेगा यह एक गतिशील वर्ग है जो आपके प्रकार के लिए हल्के प्रॉक्सी के रूप में कार्य करता है और मूल ऑब्जेक्ट (यानी डीबी से) और क्लाइंट द्वारा पास किए गए अंतर के बीच अंतर को समझ जाएगा।

यह आपके एपीआई के बाकी हिस्सों को किसी भी तरह प्रभावित नहीं करेगा (ओडीटा पैकेज निर्भरता को सुविधाजनक बनाने के लिए नए लोगों के साथ DLL को बदलकर पाठ्यक्रम को छोड़कर)

मैंने पैच + डेल्टा के काम को प्रदर्शित करने के लिए एक नमूना प्रोजेक्ट जोड़ा है – आप इसे यहां ले जा सकते हैं (यह एसएस वीएस2012) https://www.dropbox.com/s/hq7wt3a2w84egbh/MvcApplication3.zip