1
我正在使用MVC和實體框架代碼優先建立應用程序。ASP.NET MVC代碼首先創建重複記錄
我使用初始化程序來填充數據庫,當它通過對模型的任何更改重新創建時。
我在EF Code First創建重複記錄時遇到問題。最簡單的解釋方法是向您展示我的代碼。
//
// POST: /Incident/CreateIncident
[HttpPost]
public ActionResult CreateIncident(IncidentViewModel model)
{
Incident incidentToAdd = new Incident();
// Record incident details
incidentToAdd.Caller = repository.GetDomainUser(model.selectedCaller);
incidentToAdd.CallerType = model.Incident.CallerType;
incidentToAdd.Service = repository.GetService(model.selectedService);
incidentToAdd.Category = repository.GetCategory(model.selectedCategory);
incidentToAdd.AllocatedTo = repository.GetHelpDeskMember(model.selectedAllocatedTo);
[Rest of code omitted to save space]
// TODO: Send Email to Caller and AllocatedTo
// Store incident in database
db.Incidents.Add(incidentToAdd);
db.SaveChanges();
return RedirectToAction("Index");
}
我正在從倉庫現有的服務,分類和AllocatedTo,但是當涉及到保存記錄,而不是鏈接到現有的服務,類別等,它創造了一個新紀錄這是一個現有的重複。
我沒有真正解釋得很好。但如果你能提供任何幫助,我們將非常感激。
謝謝。
聽起來像是對這一事件的服務和類別記錄實際上並沒有連接到的DbContext。在存儲庫中使用的DbContext與控制器中的DbContext不相同,或者存儲庫正在返回分離的實體。 repositry.GetService究竟是什麼樣子的 - 它是否使用與您的控制器相同的DbContext? – Leniency
@Leniency,是存儲庫和控制器正在使用完全相同的上下文。 GetService()方法如下所示:'public Service GetService(int id) { return db.Services.SingleOrDefault(s => s.ServiceID == id); }' –