我已经找到了为什么会发生此错误,但不知道修复。
我正在为我的项目使用Strongly Typed Dataset
,该项目是作为DAL(Data Access Layer
)的dll创建的
我已使用设计器将Sql Server Table添加到此数据集中并创建了一个DataAdapter
使用DataTableAdapter
插入时效果很好daLabTest.Insert(txtLabTestId.Text, cmbLabTestType.Text, cmbTestName.Text, txtLabFees.Text, dtpLabEffDate.Value)
但是当我想在组合框或网格视图中显示表中的数据时,我会收到此错误。
我告诉我发现了问题所在,我只是使用DataSet设计器预览了数据,发现函数返回的数据就像这样......
我写的查询数据集中的查询是
Select distinct(TestType) from LabTestTypes
所以这应该只返回一列,但数据集返回5列但其他列为null,TestName
列是主列,返回时不应为null,因此存在问题..
要解决此问题,我尝试更改NullValue
& AllowDBNull
属性分别为[Empty]
和true
,但这对我没用。
答案 0 :(得分:1)
TestName是关键,因此它不能为空。 DataSet允许您将TestName列设置为Nullable,但是当您尝试填充它时,即使您说AllowDBNull = True,也会引发ConstraintException。
我的建议是更改强类型DataSet中的Key字段或在TestName字段中返回一个空字符串。更好的第一种方法,可能将Id设置为关键字段。