मुझे Command Query Separation का विचार पसंद है, लेकिन यह नहीं देख सकता कि एमवीसी कंट्रोलर एक्शन के भीतर इसका उपयोग कैसे किया जा सकता है, और इसे जोड़ने के बाद नई इकाई की आईडी की आवश्यकता है।एमवीसी नियंत्रकों में कमांड-क्वेरी पृथक्करण सिद्धांत का उपयोग
उदाहरण के लिए, एक सेवा सरल उदाहरण में एक नया आइटम बनाने के लिए प्रयोग किया जाता है:
public ActionResult Assign(AssignViewModel viewModel)
{
var newItem = _AssignItemService.AssignItem(viewModel.ItemName, viewModel.ItemValue);
return RedirectToAction("ListItem", new {id = newItem.Id);
}
लेकिन जब मैं कार्रवाई जो नए आइटम प्रदर्शित करने के लिए जा रहा है पर पुन: निर्देशित, मुझे पता है की जरूरत है नव निर्मित आइटम की आईडी, ताकि इसे डेटाबेस से पुनर्प्राप्त किया जा सके। तो मुझे नव निर्मित आइटम (या कम से कम, इसकी आईडी) वापस करने के लिए सेवा से पूछना है।
शुद्ध सीक्यूएस में, कमांड के पास कोई वापसी मूल्य नहीं है, इसलिए ऊपर दिया गया पैटर्न अमान्य होगा।
कोई सलाह आभारी रूप से प्राप्त हुई।
आप बाद में "आइटम" कैसे प्राप्त करते हैं? –
AssignItem विधि को पारित ऑब्जेक्ट में आईडी लौटने के बाद आईडी जानकारी शामिल होती है। चूंकि विधि एक कमांड है, ऑब्जेक्ट की स्थिति – jorgehmv
को बदलना ठीक है क्या आप मूल रूप से उस बिंदु पर अभी भी एक मूल्य वापस नहीं कर रहे हैं? निश्चित रूप से, यह फ़ंक्शन के पीछे से बाहर नहीं आ रहा है, लेकिन आप अभी भी एक मूल्य लौट रहे हैं, आप बस कहीं और वापसी मूल्य को दबा रहे हैं। उस ने कहा, मुझे इसे अलग-अलग लौटने की बजाय आईडी को ऑब्जेक्ट में रखने का विचार पसंद है। –