字符串或二进制数据将被截断。该语句已终止 - 如何找到确切的插入语句?
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' - 在这里您可以看到导致此错误的对象。
我知道以前在 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' - 在这里您可以看到导致此错误的对象。