是否有一种聪明的方法可以确定哪个字段导致'字符串或二进制数据将被LINQ截断'。
我总是通过逐步调试来手动完成它,但是使用'SubmitChanges'的批处理我必须更改我的代码以插入一行来查找一批行中的罪魁祸首。
我是否遗漏了某些东西,或者在这个时代,我真的不得不继续使用蛮力方法来解决问题。
请不要给我建议在将来避免这个错误(除非它比'验证你的数据'更聪明)。源数据来自一个不同的系统,我无论如何都没有完全控制 - 加上我想要懒惰。
PS。 SQL Server 2008实际上是否告诉我字段名称。请告诉我它!我会升级!
答案 0 :(得分:5)
启动SQL事件探查器。应用程序中的最后一个查询应该是失败的查询。
答案 1 :(得分:1)
似乎他们为.NET 3.5的Service Pack 1解决了这个问题,如以下链接所示: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=353232
可能想亲自检查一下。
答案 2 :(得分:0)
重新发布/编辑标记为linq .net
的内容可能会很有用DJ - 您将这些数据作为建议的解决方案发布在哪里?
该例外不包含此信息,因此您的帖子几乎没用 - 除非您可以指定源。
答案 3 :(得分:-1)
假设您正在处理大量记录并且您不希望(不能)事先验证数据,并且您只是希望db约束捕获任何错误?
更改您的程序以捕获异常并将当前记录详细信息打印到日志文件或其他内容。
Record # 9999
Caused "string or binary data would be truncated" error
Field1: "Data" Length: 55
Field2: 9999
etc.