मैं ट्यूटोरियल्स (विशेष रूप से लिंक-टू-एंटिटीज का उपयोग करने वाले) के माध्यम से जा रहा हूं और मैं बुनियादी अवधारणाओं को समझता हूं, हालांकि कुछ चीजें मुझे समस्याएं दे रही हैं।क्या मेरा एएसपी.नेट एमवीसी एप्लीकेशन ठीक से संरचित है?
ट्यूटोरियल में आमतौर पर केवल साधारण मॉडल और रूप शामिल होते हैं जो केवल मूल निर्माण, अद्यतन और बयान हटाते हैं। मेरा थोड़ा और जटिल है, और मुझे यकीन नहीं है कि मैं इस बारे में सही तरीके से जा रहा हूं क्योंकि जब आधा दर्जन डेटाबेस ऑब्जेक्ट्स के रिश्ते को संभालने का समय आता है, तो ट्यूटोरियल मदद करना बंद कर देते हैं।
पोस्ट विधि के लिए, CRUD संचालन
entities.AddToTableSet(myClass);
entities.SaveChanges();
प्रदर्शन कर मैं क्या चाहते हैं, क्योंकि एक पूरी तरह से लागू वर्ग नियंत्रक विधि में पोस्ट नहीं हो रही है ऐसा नहीं होगा की हमेशा की तरह। मैं अलग-अलग फ़ील्ड, फॉर्म संग्रह, या एकाधिक डीटीओ ऑब्जेक्ट्स पोस्ट कर सकता हूं और उसके बाद किसी फॉर्म पोस्ट से प्राप्त जानकारी लेने के लिए किसी सेवा या रिपोजिटरी पर एक विधि को कॉल कर सकता हूं, जिसके साथ उसे क्वेरी करने या खुद को बनाने की आवश्यकता होती है, और फिर से उन सभी चीजों को, मेरा डेटाबेस ऑब्जेक्ट बनाएं जो मैं बचा सकता हूं।
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(int id, [Bind(Exclude = "Id")] ClassA classA,
[Bind(Exclude = "Id")]ClassB classB)
{
// Validation occurs here
if(!ModelState.IsValid)
return View();
try
{
_someRepositoryOrService.Add(id, classA, classB);
return RedirectToAction("Index", new { id = id });
}
catch(Exception ex)
{
// Logging and exception handling occurs here
}
}
public void Add(int id, ClassA classA, ClassB classB)
{
EntityA eA = new EntityA
{
// Set a bunch of properties using the two classes and
// whatever queries are needed
};
EntityB eB = new EntityB
{
// Set a bunch of properties using the two classes and
// whatever queries are needed
};
_entity.AddToEntityASet(eA);
_entity.AddToEntityBSet(eB);
_entity.SaveChanges();
}
क्या मैं इसे सही ढंग से संभालने में हूं या क्या मैं ढांचे को खराब कर रहा हूं? जब भी मैं एक के लिए पूछता हूं, मैं वास्तव में कभी भी एक इकाई ऑब्जेक्ट का उपयोग नहीं करता हूं, मैंने डीटीओ में जो जानकारी की आवश्यकता है उसे रख दिया है और इसके बारे में मेरे विचारों को आधार दिया है। सृजन के साथ ही चला जाता है। क्या यह अनुमति है, या ढांचे का उपयोग करने के उद्देश्य से सीधे संस्थाओं का उपयोग करने से मेरा बचाव है?
संपादित करें: मैं भी इस दृष्टिकोण के बारे में चिंतित हूँ क्योंकि यह खाली कंस्ट्रक्टर्स ठीक से यह त्रुटि संदेश के कारण LINQ प्रश्नों करने के लिए की आवश्यकता है:
केवल parameterless निर्माणकर्ता और initializers LINQ में समर्थित हैं संस्थाओं ।
यह एक बड़ा सौदा नहीं है क्योंकि मुझे शायद ही कभी रचनाकारों के तर्क की आवश्यकता है, लेकिन क्या यह कोई रचनाकार और केवल सार्वजनिक गुण नहीं है?
लिंक से इकाइयों द्वारा उपयोग किए गए ऑब्जेक्ट कॉन्टेक्स्ट डेटा मैपिंग से ऑब्जेक्ट्स बनाने के लिए प्रतिबिंब का उपयोग करता है, इसलिए यह महत्वपूर्ण है और आवश्यक है कि सभी इकाइयों में पैरामीटर रहित कन्स्ट्रक्टर हो ताकि इसे आपके प्रकार को क्रमबद्ध करने में सक्षम होना चाहिए। एक सार्वजनिक कन्स्ट्रक्टर की भी आवश्यकता होगी – dmportella