我在Visual Web Developer 2010 express中使用C#和SQL。
我意识到我的问题是ENFORCECONSTRAINTS属性 - 我无法弄清楚如何修改。我在查询设计器窗口中看不到这样做的选项。我尝试在designer.cs文件中将其每个实例修改为false。不行。
当我从查询编辑器运行它时,我有以下查询。它正好返回一行,并且该行是正确的行。
SELECT
A.*, B.*
FROM
tblParticipants AS A
INNER JOIN
tblAdministrators AS B ON A.Part_Department = B.Adm_Department
WHERE
(A.Part_UserID = @UID) AND (B.Adm_POC = 'Y')
我从代码中调用此查询:
tblCertApplicationsTableAdapter certAdapter = new tblCertApplicationsTableAdapter();
DataTable certTable = certAdapter.GetAdmContactByUID(iUserID);
当我从代码执行此查询时,它告诉我:
无法启用约束。一行或多行包含违反非null,唯一或外键约束的值。
即使它在我使用查询窗口时正确地工作(正好返回1条正确的记录)。
我在执行这些命令之前显示iUserID
,因此传递了正确的号码。
表A和B都有一个不接受空值的键列。
所有其他列都接受空值。由于所有列都设置为允许空值,因此我认为错误消息的一部分没有意义。我试着列出我需要的列 - 它不包括任何相应的键列,所以我不认为非唯一键是问题。
有没有办法告诉VWD-“看,我知道你认为你知道发生了什么,但是,请亲爱的上帝,回报你所拥有的并让我解决它?”
答案 0 :(得分:0)
邮件来自TableAdapter
,而不是来自SQL Server。强类型DataSet
有自己的约束系统,可以强制执行可空性和关系。我怀疑在数据库中可以为空的那些列中的一个或多个在DataSet
中被标记为不可为空。您可以通过将设计器中的DataTable
设置为EnforceConstraints
来完全更改或完全禁用False
上的约束检查。