&引用;未能启用约束";来自c的sql查询中的错误消息#

&引用;未能启用约束";来自c的sql查询中的错误消息#,sql,dataset,runtime-error,constraints,Sql,Dataset,Runtime Error,Constraints,我正在VisualWebDeveloper2010Express中使用C#和SQL 我意识到我的问题在于ENFORCECONSTRAINTS属性——我不知道如何修改它。我在查询设计器窗口中看不到执行此操作的选项。我尝试在designer.cs文件中将它的每个实例都修改为false。不起作用 当我从查询编辑器运行它时,我有以下查询。它应该只返回一行,并且该行是正确的行 SELECT A.*, B.* FROM tblParticipants AS A INNER JOIN

我正在VisualWebDeveloper2010Express中使用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);
当我从代码执行此查询时,它告诉我:

未能启用约束。一个或多个行包含违反非空、唯一或外键约束的值

即使在我使用查询窗口时它工作得非常正确(只返回1条正确的记录)

我在执行这些命令之前显示
iUserID
,因此传递的是正确的数字

表A和表B都有一个键列,它不接受空值

所有其他列都接受空值。由于所有列都设置为允许空值,我认为错误消息的这一部分没有意义。我试着只列出我所需要的列-其中不包括任何一个相应的键列,所以我不认为非唯一键是问题所在


有没有办法告诉VWD——“听着,我知道你认为你知道发生了什么,但是,亲爱的上帝,请把你的东西还给我,让我来整理一下?”

消息来自
TableAdapter,而不是SQL Server。强类型的
数据集
有自己的约束系统,可以强制执行空性和关系之类的内容。我怀疑数据库中可为null的一个或多个列在
数据集中被标记为不可为null。您可以更改这一点,也可以通过将设计器中的
EnforceConstraints
设置为
False

来完全禁用
DataTable上的约束检查,因此,我从您所写的内容推断,vwd在创建DataTable的过程中以某种方式从适配器转换到数据集-因此我不知道如何“更改它”。(“我甚至不知道我正在使用它。)我在设计器中没有看到任何允许我更改甚至查看参数EnforceConstraints的内容。我检查适配器、xsd文件和特定查询的属性。
TableAdapter
s始终使用数据集;您正在设计的文件是强类型的
数据集
,您正在创建带有列的
TableAdapter
派生类。它们创建强类型的
DataTable
s。如果查看
GetAdmContactByUID
的返回类型,它可能是
tblCertApplicationsDataTable
。只要进入适配器所在的设计器,选择灰色区域,然后禁用“强制约束”。Adam Robinson我也有同样的问题,将强制约束设置为false不起作用。@MichaelS.Miller如果你发布一个新问题,可能是最好的;在评论中诊断您的问题会很困难,并且会使遇到您问题的用户更难找到解决方案。尽管如此,请随意发布一个链接,我会看看的!