VB.Net中强类型数据集出错

时间:2011-12-22 09:13:19

标签: .net vb.net sql-server-2008-r2 strongly-typed-dataset

我已经找到了为什么会发生此错误,但不知道修复。

我正在为我的项目使用Strongly Typed Dataset,该项目是作为DAL(Data Access Layer)的dll创建的

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

This is how the datatable looks

使用DataTableAdapter

插入时效果很好
daLabTest.Insert(txtLabTestId.Text, cmbLabTestType.Text, cmbTestName.Text, txtLabFees.Text, dtpLabEffDate.Value)

但是当我想在组合框或网格视图中显示表中的数据时,我会收到此错误。

Error showned in visual Studio

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

data i got preview

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

Select distinct(TestType) from LabTestTypes

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

要解决此问题,我尝试更改NullValue& AllowDBNull属性分别为[Empty]true,但这对我没用。

1 个答案:

答案 0 :(得分:1)

TestName是关键,因此它不能为空。 DataSet允许您将TestName列设置为Nullable,但是当您尝试填充它时,即使您说AllowDBNull = True,也会引发ConstraintException。

我的建议是更改强类型DataSet中的Key字段或在TestName字段中返回一个空字符串。更好的第一种方法,可能将Id设置为关键字段。