Строка или двоичные данные будут усечены ошибка - PullRequest
0 голосов
/ 28 марта 2009

Я использую Linq to SQL с SQL 2005. Я анализирую большой файл фиксированной ширины и импортирую данные в SQL через пользовательские объекты, которые я сопоставил с базой данных, используя атрибуты свойств.

Программа запускает около 240 записей перед выдачей этой ошибки. Я проверил столбцы (все четыре) и данные, которые он пытается вставить, и он не должен выдавать эту ошибку. Я даже зашел так далеко, что изменил столбцы с varchar на текст, и все равно выдает ошибку. Когда я вручную вставляю одинаковые значения, они вставляются нормально.

Есть ли известная ошибка или что-то в Linq to SQL? Я вызываю context.submitall () в каждом цикле для вставки. Я прочитал , что .NET 3.5 SP1 дает лучшие сообщения об ошибках от SQL, но я все еще ничего не вижу.

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2009

Ну, я нашел ошибку, и это определенно не было проблемой с Linq или с SQL. Я разбирал и изменял свойства другого объекта, не понимая, что он теперь присоединен к SQL через Linq, и это был тот объект, который выдавал ошибки.

Извлеченный урок: не изменяйте свойства непосредственно на объекте, если вы действительно не хотите их изменять, особенно если он присоединен к контексту данных.

0 голосов
/ 28 марта 2009

Возможно ли, что вы изменили свою схему, так как создали классы Linq для SQL? Объекты конструктора не будут обновляться при изменении схемы SQL, если вы не удалите / заново создадите класс в конструкторе или не отредактируете свойства для сгенерированного дизайнером класса. Я знаю, что он отслеживает ширину столбцов для строковых (varchar) столбцов в классе - хотя я не знаю, проверяет ли он это на самом деле перед отправкой или просто сохраняет его в качестве ссылки для любой проверки, которую вы бы сделали. Однако я видел похожие проблемы с автоматически генерируемыми идентификаторами, которые были решены путем обновления класса в конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...