मैं वर्तमान में ईएफ 4.3 और कोड फर्स्ट का उपयोग कर रहा हूं। मेरी ऑब्जेक्ट्स का निर्माण (मेरे विचारों के माध्यम से - केवल ऑटो-जनरेटेड बनाएं का उपयोग करके) करता है, लेकिन जब मैं किसी ऑब्जेक्ट को संपादित करने का प्रयास करता हूं, तो यह किसी भी बदलाव को सहेजता नहीं है, जो कि, मेरे नेविगेशन गुणों को वापस जोड़ता है। मैं reading on relationships रहा हूं, लेकिन मुझे नहीं पता कि मेरे संदर्भ को कैसे बताना है कि संबंध बदल गया है।इकाई ढांचे में नेविगेशन गुणों के लिए अद्यतन करने के लिए रिश्ते नहीं मिल सकते
यहां मेरे कार्यान्वयन का कुछ उदाहरण कोड है।
[HttpPost]
public ActionResult Edit(ProjectViewModel projectViewModel)
{
if (ModelState.IsValid)
{
Project project = new Project();
project.ProjectID = projectViewModel.ProjectID;
project.Name = projectViewModel.Name;
project.ProjectManager = repository.GetUser(projectViewModel.ManagerID);
repository.InsertOrUpdateProject(project);
repository.Save();
return RedirectToAction("Index");
}
ViewBag.Manager = new SelectList(repository.GetUsers(), "UserID", "FullName", projectViewModel.ManagerID);
return View(projectViewModel);
}
मेरी परियोजना वस्तु के भीतर::
public class Project
{
public int ProjectID { get; set; }
[Required]
public string Name { get; set; }
// Navigation Properties
public virtual User Manager { get; set; }
}
यहाँ रिपोजिटरी से इसी विधि है (जहाँ मेरे संदर्भ
@* Snippet from my view where I link into my ViewModel. *@
<div class="row">
<div class="editor-label">
@Html.LabelFor(model => model.ManagerID)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.ManagerID, ViewBag.Manager as SelectList, String.Empty)
@Html.ValidationMessageFor(model => model.ManagerID)
</div>
</div>
यहाँ मेरी नियंत्रक कार्यान्वयन (मेरी संपादित की पोस्ट) है रहता है):
public void InsertOrUpdateProject(Project project)
{
if (program.ProjectID == default(int))
{
context.Projects.Add(project);
}
else
{
context.Entry(project).State = EntityState.Modified;
}
}
बस स्पष्ट होने के लिए, यह मेरी गुणों को अपडेट करने के लिए काम करता है, लेकिन यह मेरे नेविगेशन गुणों को अपडेट नहीं करता है (इस मामले में, प्रबंधक)। किसी भी मदद की सराहना करते हैं।
उत्कृष्ट के लिए अद्यतन देखें। धन्यवाद। मैंने मूल रूप से विदेशी कुंजी मार्ग किया था, लेकिन इसके साथ कुछ समस्याएं थीं। बाहर निकलता है, यह काम करता है, लेकिन मुझे सब कुछ ठीक से मैप करने के लिए नेविगेशन प्रॉपर्टी के साथ [विदेशीकी ("नाम") विशेषता परिभाषित करना पड़ा। अपना उत्तर स्वीकार कर रहा है। धन्यवाद! – glockman
@ user1240560: मेरे उत्तर में नामों के साथ यह वास्तव में विदेशीकी विशेषता (नाम सम्मेलन द्वारा एफके पहचान) के बिना काम करना चाहिए। लेकिन अगर आपके नाम थोड़ा अलग हैं और सम्मेलन के नियमों का पालन नहीं करते हैं, तो हाँ, आपको एनोटेशन की आवश्यकता है। – Slauma
@ स्लुमा मैं तुमसे प्यार करता हूं, अन्य दृष्टिकोणों को कोड फर्स्ट मॉडल के साथ काम करना चाहिए, लेकिन डेटाबेस के साथ सबसे पहले जो मेरे लिए काम करता था वह आपका हैक था, मैं दिनों से इसके साथ गड़बड़ कर रहा था, और अब मुझे कहना है कि मुझे प्यार है आप भविष्य से बहुत –