Ich habe ein Modell Patienten, die 0 oder mehr Adressen verknüpft haben können.MVC Http Post Einstellung von Werten in Entity Framework
Ich möchte nur eine primäre Adresse, also auf meinem Beitrag bearbeiten/erstellen Ich möchte alle anderen Werte von 'IsPrimaryAddress' auf falsch setzen.
Ich habe den folgenden Code geschrieben.
// POST: /Roles/Create
[HttpPost]
public ActionResult Edit(Address address)
{
using (var context = new WaysToWellnessDB())
{
//if address is primary, make all others not
if (address.IsPrimaryAddress)
{
var addresses = context.Addresses.Where(x => x.IsPrimaryAddress == true && x.AddressId != address.AddressId);
foreach (var item in addresses)
{
item.IsPrimaryAddress = false;
item.UpdatedBy = -1;
item.UpdatedDate = DateTime.Now;
}
}
address.PatientId = Id;
address.UpdatedBy = -1;
address.UpdatedDate = DateTime.Now;
context.Entry(address).State = EntityState.Modified;
context.SaveChanges();
return RedirectToAction("View", "Patient", new { @id = Id });
}
}
Jedoch habe ich die folgende Fehlermeldung bin immer:
eine Einheit des Typs ‚WaysToWellness.Address‘ Anbringen schlug fehl, da eine andere Einheit des gleichen Typs bereits den gleichen Primärschlüssel Wert hat.
Kann jemand erklären, warum ich das nicht tun kann und warum es einen Fehler gibt?
Sie haben vergessen 'x.PatientId == Id' Zustand Ihre where-Klausel – dotctor
Leider habe ich etwas die Methode übergeben, um nicht in den Patienten-ID geändert hatte hinzuzufügen, da dies nicht nötig war, ich habe Update der ursprüngliche Beitrag – user3284707