Проблема набора данных с ограничениями при выборе из нескольких таблиц - PullRequest
0 голосов
/ 26 января 2011

Так что я разрабатываю приложение в соответствии с официальными учебниками asp.net Учебник DAL

Итак, я создал набор данных, связанный с базой данных sql на основе файлов, где находятся таблицы VIDEO, GENRE, LOAN! ВИДЕО имеет FK для ЖАНРА, а КРЕДИТ имеет FK для ВИДЕО! Я попытался создать метод GetVideoByLoan с помощью этой команды sql:

SELECT        VIDEO.ID_VIDEO, VIDEO.TITLE, VIDEO.DIRECTOR, VIDEO.YEAR, GENRE.TITLE AS GENRE_TITLE
FROM            VIDEO INNER JOIN
                     GENRE ON VIDEO.ID_GENRE = GENRE.ID_GENRE INNER JOIN
                     LOAN ON VIDEO.ID_VIDEO = LOAN.ID_VIDEO
WHERE (LOAN.USERID = @USERID OR @USERID = cast(cast(0 as binary) as uniqueidentifier) AND(LOAN.ISLOAN = @ISLOAN)

Все в порядке, нет проблем, чтобы вернуть результаты, но когда я пытаюсь это sql:

SELECT        LOAN.ID_LOAN, LOAN.USERID, LOAN.ID_VIDEO, VIDEO.TITLE, VIDEO.DIRECTOR, VIDEO.YEAR, GENRE.TITLE AS GENRE_TITLE
FROM            VIDEO INNER JOIN
                     GENRE ON VIDEO.ID_GENRE = GENRE.ID_GENRE INNER JOIN
                     LOAN ON VIDEO.ID_VIDEO = LOAN.ID_VIDEO
WHERE (LOAN.USERID = @USERID OR @USERID = cast(cast(0 as binary) as uniqueidentifier) AND(LOAN.ISLOAN = @ISLOAN)

я получаю ошибку

Failed to enable constraints. One or more rows contain values violating non-null, unique, 
or foreign-key constraints. 
Description: An unhandled exception occurred during the execution of the current web request. 
Please   review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.ConstraintException: Failed to enable constraints. 
One or more rows contain values violating non-null, unique, or foreign-key constraints.

Если я запускаю выше команды sql в редакторе запросов, все в порядке, но когда я пытаюсь получить к ней доступ через набор данных, вышеупомянутые ошибки apperas, несмотря на то, что первый sql работал. Я также попытался удалить VIDEO DataTable из DataSet и снова поместить его из обозревателя серверов, но это не помогло. Знаете ли вы, где может быть проблема? Большое спасибо за ответ.

Ответы [ 2 ]

1 голос
/ 31 января 2011

Я пытался добавить в метод данных с помощью оператора sql, возвращающего больше столбцов, чем было в datatable, было решено создать новый datatableadapter с данными, состоящими из правых столбцов.так что это была моя ошибка новичка.

1 голос
/ 26 января 2011

Контрольный список для такой проблемы,

  1. Я полагаю, что ваше объединение вернуло более одной строки для объединения, где оно должно вернуть только одну (хотя в sql работает правильно).Иногда результаты содержат более одной строки, содержащей один и тот же уникальный / первичный ключ

  2. Проверьте тип данных таблицы SQL и типы данных в формате данных, оба должны совпадать.

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