字符串或二进制数据将被截断。该语句已终止 - 如何找到确切的插入语句?

String or binary data would be truncated. The statement has been terminated - how to find which exact insert statement?

我知道以前在 SO 中很少有人问过类似的问题。但我的问题有点不同。 我有一个类似于这个的代码块 -

     using (DBWebEntities db = new DBWebEntities())
            {
                if (StatusDict != null && StatusDict.Count > 0)
                {
                    foreach (KeyValuePair<string, job_status> kvp in JobStatusDict)
                    { db.AddToEmp_status(kvp.Value); }

                    db.SaveChanges();
                }
            }

如您所见,我是 运行 最后所有插入查询的 db.saveChanges() 。 我得到了一些实体的例外。 我如何从异常中找出它发生在哪个实体值上?

当我检查 innerexception 时,我只能找到堆栈跟踪,而不是导致此问题的实体。

我正在使用 .NET 4。

您可以执行以下操作

catch (DbEntityValidationException ex)
            {

将鼠标悬停在前。查询 entityvalidationerrors、dbentityvalidationresult、Entry、Entity :查看您试图进入数据库的值和字段名称。

查询 entityvalidationerrors、dbentityvalidationresult、Entry、Entity -- 查看您需要的table

这就是我最终找到它的方式。 将鼠标悬停在 'ex'-> 展开 System.Data.UpdateException -> 展开 'State Entries' - 在这里您可以看到导致此错误的对象。