从更多表中进行选择时,数据集会出现约束问题

时间:2011-01-26 17:03:55

标签: c# asp.net dataset

所以我根据官方asp.net教程DAL Tutorial

开发应用程序

所以我创建了连接到基于文件的sql数据库的数据集,其中有表VIDEO,GENRE,LOAN! VIDEO有FK到GENRE,LOAN有FK到VIDEO!我尝试用这个sql命令创建方法GetVideoByLoan:

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命令以上一切都很好,但是当我尝试通过数据集访问它时,上面的错误出现了,尽管第一个sql正在运行。我还尝试从DataSet中删除VIDEO DataTable并将其从服务器资源管理器中删除,但它没有帮助。你知道问题出在哪里吗?非常感谢您的回答。

2 个答案:

答案 0 :(得分:1)

检查此类问题的清单,

  1. 我认为你的连接返回多行连接,它应该只返回一个。(虽然它在sql中正常工作。)某些时候结果包含多行,其中包含相同的唯一/主键< / p>

  2. 检查SQL Table的数据类型和Datatable的数据类型,两者都应匹配。

答案 1 :(得分:1)

我试图添加一个数据表方法,其中sql语句返回的列比datatable更多,解决方案是创建新的datatableadapter,其中datable由右列组成。所以这是我的初学者错误。