MVCとEntity Frameworkコードファーストを使用してアプリケーションを構築しています。ASP.NET MVCコード最初に重複レコードを作成する
私は、モデルの変更によってデータベースが再作成されたときに、初期化子を使用してデータベースを設定しています。
私はEFコードで問題が発生しています。重複レコードを最初に作成しています。説明する最も簡単な方法は、自分のコードを表示することです。
//
// 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、Yesリポジトリとコントローラはまったく同じコンテキストを使用しています。 GetService()メソッドは次のようになります。 'public Service GetService(int id) { return db.Services.SingleOrDefault(s => s.ServiceID == id); } ' –