मैं अपनी प्रस्तुति परत और डेटा मॉडल / डेटाबेस के लिए इकाई ढांचे के लिए JSON के साथ MVC का लाभ उठाने वाली एक वेबसाइट बनाने के साथ प्रयोग कर रहा हूं। मेरा मुद्दा JSON में मेरी मॉडल वस्तुओं को क्रमबद्ध करने के साथ आता है।
मैं अपने डेटाबेस को बनाने के लिए कोड पहली विधि का उपयोग कर रहा हूं। कोड करते समय पहली विधि एक से कई संबंधों (माता-पिता / बच्चे) के लिए आवश्यक होती है कि बच्चे को माता-पिता के पास वापस भेजना चाहिए। (उदाहरण कोड मेरे एक टाइपो हो, लेकिन आप चित्र प्राप्त करें)
class parent
{
public List<child> Children{get;set;}
public int Id{get;set;}
}
class child
{
public int ParentId{get;set;}
[ForeignKey("ParentId")]
public parent MyParent{get;set;}
public string name{get;set;}
}
जब एक "माता-पिता" ऑब्जेक्ट को JsonResult के माध्यम से लौटाते हैं तो एक परिपत्र संदर्भ त्रुटि फेंक दी जाती है क्योंकि "बच्चे" में कक्षा माता-पिता की संपत्ति होती है।
मैंने ScriptIgnore विशेषता की कोशिश की है, लेकिन मैं बच्चे की वस्तुओं को देखने की क्षमता खो देता हूं। मुझे कुछ बिंदु पर एक पैरेंट चाइल्ड व्यू में जानकारी प्रदर्शित करने की आवश्यकता होगी।
मैंने माता-पिता और बच्चे दोनों के लिए आधार कक्षाएं बनाने की कोशिश की है जिनके पास एक परिपत्र संदर्भ नहीं है। दुर्भाग्य से जब मैं बेसपरेंट और बेसहिल भेजने की कोशिश करता हूं तो इन्हें JSON Parser द्वारा उनकी व्युत्पन्न कक्षाओं के रूप में पढ़ा जाता है (मुझे पूरा यकीन है कि यह अवधारणा मुझसे बच रही है)।
Base.baseParent basep = (Base.baseParent)parent;
return Json(basep, JsonRequestBehavior.AllowGet);
एक समाधान जो मैं लेकर आया हूं, वह है "व्यू" मॉडल बनाना। मैं डेटाबेस मॉडल के सरल संस्करण बनाता हूं जिसमें मूल वर्ग का संदर्भ शामिल नहीं है। ये दृश्य मॉडल प्रत्येक के पास डेटाबेस संस्करण और एक कंस्ट्रक्टर को वापस लाने की विधि है जो डेटाबेस मॉडल को एक पैरामीटर (viewmodel.name = databasemodel.name) के रूप में लेता है। यह विधि मजबूर लगती है हालांकि यह काम करती है।
नोट: मैं यहाँ पोस्ट कर रहा हूँ क्योंकि मुझे लगता है कि यह अधिक चर्चा योग्य है। मैं इस मुद्दे पर आने के लिए एक अलग डिजाइन पैटर्न का लाभ उठा सकता हूं या यह मेरे मॉडल पर एक अलग विशेषता का उपयोग करने के रूप में सरल हो सकता है। अपनी खोज में मैंने इस समस्या को दूर करने के लिए एक अच्छी विधि नहीं देखी है।
मेरा अंतिम लक्ष्य एक अच्छा MVC एप्लिकेशन होगा जो सर्वर के साथ संचार करने और डेटा प्रदर्शित करने के लिए JSON का भारी लाभ उठाता है। परतों के पार एक सुसंगत मॉडल को बनाए रखते हुए (या सबसे अच्छा के रूप में मैं साथ आ सकते हैं)।