Невозможно присвоить значение первичного ключа другому столбцу таблицы с тем же типом данных

Я не могу сохранить значение "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 узнает идентификатор и назначит соответствующие отношения в рамках одной транзакции.

Другие вопросы по тегам