字符串或二进制数据将被截断错误

时间:2009-03-27 21:21:33

标签: linq linq-to-sql

我在SQL 2005中使用Linq to SQL。我正在解析一个大的固定宽度文件,并通过使用属性属性映射到数据库的自定义实体将数据导入SQL。

该程序在抛出此错误之前运行大约240条记录。我检查了列(它们全部四个)和它试图输入的数据,它不应该抛出这个错误。我甚至已经把varchar中的列更改为文本,但它仍然会抛出错误。当我手动插入相同的值时,它们插入正常。

Linq to SQL中是否存在已知错误或任何内容?我在每个要插入的循环上调用context.submitall()。我read .NET 3.5 SP1提供了来自SQL的更好的错误消息,但我仍然没有看到任何内容。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您是否可能在构建Linq to SQL类之后更改了架构?除非在设计器中删除/重新创建类或手动编辑设计器生成的类的属性,否则在更改SQL模式时不会更新设计器实体。我知道它会跟踪类中字符串(varchar)列的列宽 - 虽然我不知道它是否在提交之前实际检查它,或者只是将它作为任何验证的参考。我已经看到类似自动生成的ID这样的问题,通过更新设计器中的类来解决。

答案 1 :(得分:0)

好吧,我发现了这个bug,这绝对不是Linq或SQL的问题。我正在砍掉并更改另一个对象的属性,没有意识到它现在通过Linq附加到SQL,并且正是该对象抛出了错误。

获得的经验:除非您真的想要更改它们,否则不要直接在对象上更改属性,特别是如果它附加到数据上下文中。