无法启用约束.一行或多行包含违反非null,唯一或外键约束的值.VB.Net中的错误

Kis*_*mar 3 vb.net dataset strongly-typed-dataset visual-studio-2010 sql-server-2008-r2

StackOverFlow中有三个类似的问题,但没有一个给出答案.

如果已经找到为什么发生此错误但不知道修复.

我正在使用Strongly Typed Dataset我的项目,它是作为DAL的dll创建的.

我已使用设计器将Sql Server Table添加到此数据集中,并创建了一个DataAdapter

这就是数据表的外观

我使用DataTableAdapter插入时工作正常

daLabTest.Insert(txtLabTestId.Text, cmbLabTestType.Text, cmbTestName.Text, txtLabFees.Text, dtpLabEffDate.Value)
Run Code Online (Sandbox Code Playgroud)

但是当我想在组合框或gridview中显示表中的数据时,我得到了这个错误.

在Visual Studio中显示错误

我告诉我发现问题所在,我只是使用DataSet设计器预览数据,发现函数返回这样的数据......

我预览了数据

我写的查询在数据集中查询的查询是

Select distinct(TestType) from LabTestTypes
Run Code Online (Sandbox Code Playgroud)

所以这应该只返回一列,但数据集返回5列但其他列为null,并且该TestName列是主要的,返回时不应为null,因此问题存在..

为了解决这个问题,我尝试将NullValue&AllowDBNull属性分别更改为[Empty]和,true但这对我没有用.

请帮帮我...

cro*_*sek 6

那种过于普遍的约束异常是令人讨厌的,在这么多投诉之后是InnerException?!

此模板可能有助于识别问题行和列,但需要"填充"版本的查询功能.例如GetDistinct*() - >填充*().然后可以创建一个表并查询该行的错误文本.

    SomeTable tTable = new SomeTable()
    try {
       // sorry, if you have a GetData, change to the fill version
         someTable.FillByActiveLogin(tTable, loginName);
    } catch (System.Data.ConstraintException constrExc) {             
            System.Data.DataRow[] rowsErr = tTable.GetErrors();
            for (int i = 0; i < rowsErr.Count(); i++)
                if (rowsErr[i].HasErrors)
                  Dbg.WriteLine(rowsErr[i].RowError);
    }
Run Code Online (Sandbox Code Playgroud)

(感谢Michael S无论你是谁/无论你在哪里,这都是暗示!)