Невозможно присвоить значение первичного ключа другому столбцу таблицы с тем же типом данных
Я не могу сохранить значение "ID" для Student в "StudentID" таблицы StudentCourses. Она не возвращает ошибку, типы данных также совпадают.
ViewModel: StudentVM
public class StudentVM
{
public Student student { get; set; }
public SelectList Courses { set; get; }
public int SelectedCourseID { get; set; }
public StudentCourses studentCourse { get; set; }
}
"St.Id" дает мне значение, однако его значение не передается в поле "StudentID" таблицы StudentCourse без сообщения об ошибке.
[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();
}
Объект St действительно возвращает значения ввода. пожалуйста, посмотрите.
1 ответ
Решение
Вы не должны присваивать идентификаторы, а целые объекты друг другу.
StudentCourses stc =
new StudentCourses() { CourseID = Vm.SelectedCourseID, Student = st };
Таким образом, после SubmitChanges() LsS узнает идентификатор и назначит соответствующие отношения в рамках одной транзакции.