Ich kann den "ID" -Wert von Student in "StudentID" der StudentCourses-Tabelle nicht speichern. Wenn kein Fehler zurückgegeben wird, stimmen Datentypen auch überein.Kann Primärschlüsselwert zu einer anderen Tabellenspalte desselben Datentyps nicht zuordnen
Ansichtsmodell: StudentVM
public class StudentVM
{
public Student student { get; set; }
public SelectList Courses { set; get; }
public int SelectedCourseID { get; set; }
public StudentCourses studentCourse { get; set; }
}
Die „St.Id“ gibt mir einen Wert jedoch seinen Wert nicht auf „StudentID“ Feld StudentCourse Tabelle übertragen bekommen, ohne Fehlermeldung.
[HttpPost]
public ActionResult Create(FormCollection Form,StudentVM Vm) {
// string strDDLValue = Vm.SelectedCourseID;
Student st = new Student() {Name=Vm.student.Name };
var stname=st.Name;
int stid = st.Id; //No transfer of value takes place.stid is null
StudentCourses stc = new StudentCourses() { CourseID = Vm.SelectedCourseID, StudentID = st.Id };
db.Students.Add(st);
db.StudentCourses.Add(stc);
db.SaveChanges();
return View();
}
Das Objekt St liefert tatsächlich Werte zurück. bitte guck dir das an.
Alles, was Sie getan haben, ist eine neue Instanz von 'Student' initialisiert und die Eigenschaft' Name' festgelegt. Nirgendwo haben Sie seine 'Id' -Eigenschaft so gesetzt, dass' int stid = st.Id '' null' oder '0' zurückgibt, abhängig davon, wo die Eigenschaft' int? 'Oder' int' ist (und ein Ansichtsmodell sollte nicht enthalten ein Datenmodell beim Editieren!) –
St.Id gibt einen Wert zurück, schaue bitte auf das Bild, das ich hinzugefügt habe. – Arun3x3
Dann müssen Sie 'Student' einen Standardkonstruktor haben, der den Wert setzt, was bedeutet, dass' std' 2004 ist (nicht null als Ihr Anspruch!) Oder Sie diesen Wert im Debugger nach der 'db.SaveChanges();' Zeile lesen . –