2015-07-10 54 views
0

我有一個使用EF5針對DB2 9.1(z/OS)運行的WPF應用程序。除了插入主鍵是INTEGER(10)字段的位置外,一切正常。無法在DB2上插入行w/EF5

該實體將映射的屬性作爲int類型。

private Models.UserInfo GetUserInfo(String emplID, String firstName, String lastName) 
    { 
     if (String.IsNullOrEmpty(emplID)) 
      return null; 
     int _emplID = Convert.ToInt32(emplID.Trim()); 

     try 
     { 

      using (var ctx = new Data.TIMSContext()) 
      { 
       var user = (from u in ctx.Query<Data.Entities.ASNUser>() 
          where u.EmployeeID == _emplID 
          select u).FirstOrDefault(); 

       if (user == null) 
       { 
        //add user to database 
        user = new Data.Entities.ASNUser() 
        { 
         EmployeeID = _emplID, 
         FirstName = firstName.Trim(), 
         LastName = lastName.Trim() 
        }; 
        ctx.Set<Data.Entities.ASNUser>().Add(user); 
        ctx.SaveChanges(); 
       } 

       return new Models.UserInfo() 
       { 
        EmployeeID = user.EmployeeID, 
        DisplayName = String.Format("{0}, {1}", user.LastName, user.FirstName) 
       }; 
      } 
     } 
     catch (Exception e) 
     { 
      throw; 
     } 
    } 
+0

唉,錯誤在於無法將空值插入員工ID列。我不知道爲什麼它會爲空,因爲傳入的字符串是有效的數字字符串,並且在轉換後,它絕對有一個值。 – Sam

+0

這與http://stackoverflow.com/questions/31325779/cant-insert-simple-row-into-db2-w-ef5有何不同? – mustaccio

+0

,因爲我認爲它已經開始工作......但我錯了。 – Sam

回答

0

這可能是您的edmx文件/ EF模型的問題。

如果EmployeeID字段在模型中定義爲自動增量ID,那麼EF將忽略您設置的值,並將null發送到數據庫。但數據庫沒有自動增量字段,所以它試圖插入null。

+0

這是首先寫入DB的。沒有edmx。該字段未設置爲在數據庫中自動遞增。 – Sam