【问题标题】:Can't insert simple row into DB2 w/ EF5无法使用 EF5 将简单行插入 DB2
【发布时间】:2015-07-09 18:45:23
【问题描述】:

我正在使用 EF5 和 DB2 9.1 for z/OS 和 IBM 数据提供程序。除了这一部分之外,我的程序中的所有内容都运行良好。我无法将新对象插入数据库。我得到错误:

{"错误 [23502] [IBM][DB2] SQL0407N 将 NULL 值分配给 不允许使用 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;
        }

【问题讨论】:

  • 顺便说一下,db中的列被定义为INTEGER类型,主键。
  • 另外,当我创建一个命令并执行它并插入完全相同的值时,它工作得很好。

标签: c# wpf entity-framework db2


【解决方案1】:

问题是我将用户设置为一个新对象,然后将其添加到 DBSet。我猜这创建了用户对象的两个不同副本,一个为空,一个已填写。所以我注释掉了添加行,它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2015-07-09
    • 1970-01-01
    • 2016-05-20
    • 2022-12-05
    • 2014-03-04
    相关资源
    最近更新 更多