我使用EF5和DB2 9.1 for z / OS和IBM数据提供程序。除了这一部分,我程序中的所有内容都能正常工作。我无法在数据库中插入新对象。我收到错误:
{" ERROR [23502] [IBM] [DB2] SQL0407N将NULL值分配给a NOT NULL列\" EMPL_ID \"是不允许的。"}
我已经一次又一次地验证了值是非空的...它是一个有效的整数。发生了什么事?
if (String.IsNullOrEmpty(emplID))
return null;
try
{
int _emplID = Convert.ToInt32(emplID.Trim());
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 :(得分:0)
问题在于我将用户设置为新对象,然后将其添加到DBSet。我想这创建了两个不同的用户对象副本,一个是null,一个是填写的。所以我注释掉了添加行,它运行良好。