Ich versuche, einen Datenbankeintrag mit Entity Framework zu aktualisieren. Die Einheiten sind wie folgt:Versuch, die Datenbank mithilfe von Entity Framework Code zu aktualisieren Zuerst
public partial class Test
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid identity { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public TestRef Colour { get; set; }
}
public class TestRef
{
public int id { get; set; }
public string favColor { get; set; }
}
und bearbeitet Action in dem entsprechenden Controller ist wie folgt:
public ActionResult Edit([Bind(Include = "identity,Name,Age,Colour")] Test test)
{
if (ModelState.IsValid)
{
test.Colour = db.TestRefs.Find(test.Colour.id);
db.Tests.Attach(test);
db.Entry(test).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(test);
}
Also hier, Edit scheint mit Ausnahme Farbe für alle Eigenschaften in Test zu arbeiten (in dass alle anderen Eigenschaften aktualisiert werden, aber die Farbe unverändert bleibt, ohne Änderung). Ich nehme an, das ist, weil es eine Assoziation ist, aber ich kann nicht für das Leben von mir herausfinden, warum.
Sie müssen genauer sein, was nicht funktioniert. Ist die Color-Eigenschaft für die Anforderung korrekt gebunden? Ist die Color-Eigenschaft nicht in der Datenbank festgelegt? Versucht der TestRef, diesen Test zu verknüpfen, bereits in der Datenbank vorhanden zu sein? Gib uns bitte Details. – Jakotheshadows
Die Color-Eigenschaft ist verbindlich, aber nicht in der Datenbank festgelegt. Auch die TestRefs existieren bereits in der Datenbank. – ASMoncrieff