2017-04-08 43 views
0

我無法將Student的「ID」值存儲到StudentCourses表的「StudentID」中。它不返回錯誤,數據類型也匹配。無法將主鍵值分配給相同數據類型的另一個表列

視圖模型: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」是給我但其價值沒有得到轉移到StudentCourse表「StudentID」字段中的值,沒有任何錯誤信息。

[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確實返回輸入值。請看一看。

enter image description here

+1

你所做的一切都是初始化一個'Student'的新實例並設置其'Name'屬性。無處設置'Id'屬性,所以'int stid = st.Id'將根據屬性是'int?'還是'int'返回'null'或'0'(並且視圖模型不應該包含一個數據模型編輯時!) –

+0

St.Id確實返回一個值,請看看我添加的圖片。 – Arun3x3

+0

然後你'Student'必須有一個默認的構造函數來設置這個值,這意味着'stid'將會是2004(不是你的聲明爲空),或者你在'db.SaveChanges();'行之後的調試器中讀取了這個值。 –

回答

1

你不應該分配的ID,但整個實體海誓山盟。

StudentCourses stc = 

new StudentCourses() { CourseID = Vm.SelectedCourseID, Student = st }; 

這種方式,當的SubmitChanges()LSS就知道ID和單個事務中指定相應的關係。

+0

你是對的@普倫。謝謝 – Arun3x3

相關問題