2016-08-03 14 views
1

Also poste ich auf die Controller-Aktion unten und ich möchte "Pfad" zu diesem Auto Objekt Client. Wenn ich dies zu tun versuchen, aber, bekomme ich einen
Innerhalb von Controller-Aktionen, warum kann nicht ein Pfad zu den verknüpften Tabellen eines Objekts gefunden werden? (mehr drinnen)

Null Referenz Ausnahmefehler (Object Verweis auf eine Instanz eines Objekts nicht festgelegt).


Aus irgendeinem Grund ist Client null.

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create([Bind(Include = "ClientID,Name")] Car myCar) 
{ 
    if (ModelState.IsValid) 
    { 
     db.myCars.Add(myCar); 
     db.SaveChanges(); 

     //why is Client null here (Null Exception)? 
     myCar.Client.UpdateLastModified(); 

     return RedirectToAction("Details", "Cars", new { id = myCar.ClientID }); 
    } 
} 

Gibt es eine Möglichkeit, dies zu tun? Auch wenn jemand erklären könnte, warum dies geschieht, würde es mir sehr helfen.

Vielen Dank im Voraus.


edit: Ich bin mit Linq-to-SQL, MVC 5, EF 6

+0

'myCar' wird aus dem erstellt, was Sie von Ihrem Formular gepostet haben. Überprüfen Sie also die Daten, die vom Formularpost kommen, und sehen Sie, ob es richtige Daten zum Laden der 'Client'-Eigenschaft hat. – Shyju

+0

Warum macht EF/C# das nicht für mich? Es scheint wie zusätzliche Arbeit, Client manuell zu laden, bevor die notwendige Aktion ausgeführt wird (zB UpdateLastModified()) Ich meine, es ist ziemlich offensichtlich, was ich versuche (Laden eines verwandten Client-Objekts) - Ich verstehe nicht warum EF und/oder C# kann das nicht für mich tun. –

+0

Dies ist eine Erstellungsaktion, bei der Sie eine neue Entität aus den Daten von form.rite erstellen. Wenn es für einen EDIT-Bildschirm mit der eindeutigen ID ist, müssen Sie die Datenbank abfragen und die Entität abrufen. Wenn Sie eine Bearbeitung vornehmen, ist es am besten, die Daten aus db zu übernehmen und die Eigenschaften zu aktualisieren, die aktualisiert werden müssen. http://stackoverflow.com/questions/34260334/mvc-6-bind-attribute-disappears/34260397#34260397 – Shyju

Antwort

0

myCar.Client nicht geladen wird, versuchen Sie-re Laden der Einheit.

var car = db.mycars.First(x => x.Id == myCar.Id); 
car.Client.UpdateLastModified(); 
+0

Ich verwende Linq-to-SQL –

+0

Warum muss dieses Client-Objekt neu geladen werden? Es scheint, als ob EF/C# sehen sollte, was ich versuche, und es einfach für mich neu zu laden. Gibt es etwas, das ich hier vermisse oder was? Ich verstehe nicht, warum das nicht so funktioniert, wie es ist. –

+0

Ich sehe nicht, wo Sie es "laden". – mxmissile