2015-07-10 45 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