मेरे पास 2 परियोजनाएं हैं - एक कक्षा पुस्तकालय जिसमें ईडीएम इकाई फ्रेमवर्क मॉडल और एक अलग एएसपी.नेट एमवीसी परियोजना है।एएसपी.नेट एमवीसी 3 में ईएफ 4 इकाई को कैसे अपडेट करें?
मुझे एमवीसी का उपयोग करके किसी इकाई में परिवर्तनों को संपादित करने और सहेजने के तरीके के साथ समस्याएं आ रही हैं। मेरी नियंत्रक में मेरे पास है:
public class UserController : Controller
{
public ActionResult Edit(int id)
{
var rep = new UserRepository();
var user = rep.GetById(id);
return View(user);
}
[HttpPost]
public ActionResult Edit(User user)
{
var rep = new UserRepository();
rep.Update(user);
return View(user);
}
}
मेरे UserRepository
इस तरह की एक अद्यतन विधि है:
public void Update(User user)
{
using (var context = new PDS_FMPEntities())
{
context.Users.Attach(testUser);
context.ObjectStateManager.ChangeObjectState(testUser, EntityState.Modified);
context.SaveChanges();
}
}
अब, जब मैं 'सहेजें' संपादित करें उपयोगकर्ता पेज पर क्लिक करें, पैरामीटर user
केवल दो मान हैं आबादी: आईडी, और फर्स्टनाम। मैं इसे लेता हूं जो इस तथ्य के कारण है कि मैं केवल उन दो गुणों को देख रहा हूं।
मेरा प्रश्न यह है कि, यदि मैं उपयोगकर्ता का पहला नाम अपडेट कर रहा हूं, और फिर इसे सहेजना चाहता हूं, तो मुझे अन्य User
गुणों के बारे में क्या करना है, जो दृश्य पर नहीं दिखाए गए थे, क्योंकि अब उनमें 0 या user
ऑब्जेक्ट में कुल मान?
मैं स्टब इकाइयों का उपयोग करने के बारे में बहुत कुछ पढ़ रहा हूं, लेकिन मुझे कहीं भी तेज़ नहीं मिल रहा है, जिसमें मैंने वास्तव में कोई भी उदाहरण नहीं देखा है। यानी मैं EntityKey संबंधित अपवाद प्राप्त करता रहता हूं।
क्या कोई मुझे एक अच्छा ट्यूटोरियल/उदाहरण के लिए इंगित कर सकता है कि एक एमवीसी फ्रंट एंड द्वारा बुलाए गए रिपोजिटरी क्लास का उपयोग करके ईएफ 4 इकाइयों को कैसे अपडेट किया जाए?
@Jason इवांस - कि ठूंठ तकनीक के रूप में जाना जाता है, और केवल अदिश संपत्तियों के लिए काम करता है। यदि आपके पास 'उपयोगकर्ता। एड्रेस' जैसी नौसैनिक संपत्ति है, जिसे आप अपने व्यू में बाध्यकारी कर रहे हैं, तो उपरोक्त पते को अपडेट नहीं करेंगे। मैं आपको ऑब्जेक्ट को अपडेट करने के लिए 'TryUpdateModel' का उपयोग करके फिर से डीबी से उपयोगकर्ता को पुनर्प्राप्त करने की सलाह दूंगा। अधिक जानकारी के लिए यहां मेरा हालिया प्रश्न/उत्तर देखें: http://stackoverflow.com/questions/4653834/asp-net-mvc-ef4-poco-repository-how-to-update-relationships/4666466#4666466 – RPM1984
@ RPM1984 - यह नेविगेशन गुणों के साथ परेशानी बचाएगा। TryUpdateModel() के साथ मेरे पास एक चिंता है। मैं यह सुनिश्चित करने की कोशिश कर रहा हूं कि सामानों को प्राप्त/सहेजने/हटाने से निपटने के लिए मैं एक भंडार का उपयोग कर सकता हूं। TryUpdateModel() का उपयोग करके, क्या आपके पास यह कोड कैसे करें इस पर अच्छे डिज़ाइन के सुझाव हैं? मैं नहीं चाहता कि नियंत्रक किसी भी डेटाबेस से संबंधित कोड से निपटने के लिए यदि आप देखते हैं कि मेरा क्या मतलब है। –
नहीं, सुनिश्चित नहीं है कि आपका क्या मतलब है। हालांकि, मैं अनुमान लगाऊंगा कि, अपने रिपोजिटरी में एक मानक "सहेजें" विधि बनाएं, जो "आंकड़े" हो, यदि यह एक नई/मौजूदा वस्तु है (उदाहरण के लिए आईडी पर आधारित)। तो आपको रिपॉजिटरी को कॉल करने की आवश्यकता नहीं है। अद्यतन या भंडार। जोड़ें। बस TryUpdateModel तो सहेजें। यदि आप का जिक्र नहीं है कि आपका कंट्रोलर आपकी इकाई को छू रहा है - मुझे आपकी चिंता नहीं आती है। नियंत्रक मॉडल को रीफ्रेश करने के लिए हैं। और यह सब एक "वस्तु" को अद्यतन कर रहा है - आपका भंडार अभी भी कहा गया वस्तु के दृढ़ता से चिंतित है। – RPM1984