Получение ошибки при заполнении данных из адаптера данных - PullRequest
2 голосов
/ 01 октября 2008

Я получаю эту ошибку, но только очень редко. 99,9% времени работает нормально:

Не удалось включить ограничения. Одна или несколько строк содержат значения, нарушающие ненулевые, уникальные или ограничения внешнего ключа.

Кто-нибудь знает, что может быть причиной? Я использую эти данные только для просмотра, а не для обновления, поэтому можно ли как-то легко отключить все ограничения?

Ответы [ 3 ]

3 голосов
/ 01 октября 2008

Установите DataSet.EnforceConstraints в false перед заполнением DataTable

2 голосов
/ 01 октября 2008

Обычно это происходит, когда схема в вашем наборе данных применяет что-то, чем не является ваша база данных.

Visual Studio автоматически прочитает схему и попытается настроить некоторые первичные ключи в вашем наборе данных, но если вы используете представление, которое может возвращать несколько строк, произойдет сбой. Достаточно просто удалить эти ограничения из самого набора данных, удалив ограничение в конструкторе.

Убедитесь, что в вашем наборе данных не применяется первичный ключ в ситуации, когда вы можете иметь две строки с одним и тем же ключом, как в представлении, которое объединяет две таблицы вместе и, следовательно, дублирует строки в родительской таблице. По умолчанию VS попытается создать первичный ключ родительской таблицы в качестве уникального ограничения для набора данных, но само представление не применяет такого ограничения.

0 голосов
/ 04 августа 2016

Эта ошибка также может возникать, если вы используете XSD DataSet для определения своей схемы и максимальная длина поля переменной длины (varchar, varbinary и т. Д.) Увеличивается в базе данных, но XSD не восстанавливается. 1001 *

В моем случае у меня было поле базы данных varchar(100) с текстовым значением длиной 60 символов. XSD ожидал, что это поле будет иметь максимальную длину 50 (это можно увидеть в методе InitClass() файла Designer.cs). Когда эта запись была загружена, я получил сообщение об ошибке «Не удалось включить ограничения». Обновление записи для уменьшения поля ниже 50 устранило ошибку.

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