[अपडेट]
क्योंकि L2E प्रयोग किया जाता है क्या आप मुख्य उद्देश्य बचा सकता से पहले पहले सभी जुड़े वस्तुओं को बचाने के लिए की जरूरत है। जो समझ में आता है अन्यथा आप किसी कलाकार के संपर्क ऑब्जेक्ट के बिना (मेरे उदाहरण में) एक कलाकार बनायेंगे। डेटाबेस डिजाइन द्वारा इसकी अनुमति नहीं है।
[/ अद्यतन]
यहां मेरा कार्यान्वयन है जो काम करता है।
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude = "Id")] Artist artist, [Bind(Prefix = "Contact")] Contact contact, [Bind(Prefix = "Country")] Country country, [Bind(Prefix = "ContactRelationship")] ContactRelationship contactRelationship)
{
ViewData["Countries"] = new SelectList(new CountryService(_msw).ListCountries().OrderBy(c => c.Name), "ID", "Name");
ViewData["ContactRelationships"] = new SelectList(new ContactRelationshipService(_msw).ListContactRelationships().OrderBy(c => c.ID), "ID", "Description");
country = _countryService.GetCountryById(country.ID);
contact.Country = country;
contactRelationship = _contactRelationshipService.GetContactRelationship(contactRelationship.ID);
contact.ContactRelationship = contactRelationship;
if(_contactService.CreateContact(contact)){
artist.Contact = contact;
if (_service.CreateArtist(artist))
return RedirectToAction("Index");
}
return View("Create");
}
और फिर मेरी ContactRepository में:
public Contact CreateContact(Contact contact)
{
_entities.AddToContact(contact); //no longer throws the exception
_entities.SaveChanges();
return contact ;
}
मैं भी इस वेबसाइट है कि यह सबसे अच्छा है तो मैं अब के लिए एक विशेष डाटा वर्ग का उपयोग कर रहा आवेदन भर उसी संदर्भ रखने के लिए पर पाया यह:
रिक स्ट्राल और सैमुअल मैचम ने मुझे सिखाया है कि आपको प्रति अनुरोध प्रति उपयोगकर्ता अपने डेटाएन्टेक्स्ट को रखना चाहिए। इसका अर्थ है वेब अनुप्रयोगों के लिए इसे HttpContext में डालना। यह here
public class Data
{
public static MyDBEntities MyDBEntities
{
get
{
if (HttpContext.Current != null && HttpContext.Current["myDBEntities"] == null)
{
HttpContext.Current["myDBEntities"] = new MyDBEntities();
}
return HttpContext.Current["myDBEntities"] as MyDBEntities;
}
set {
if(HttpContext.Current != null)
HttpContext.Current["myDBEntities"] = value;
}
}
}
धन्यवाद पीटर, मैं एक ही समाधान की तलाश करने में एक घंटे खर्च करता हूं। धन्यवाद फिर से – Geo