.net 强类型数据集在选择单个列时返回所有列

.net 强类型数据集在选择单个列时返回所有列,.net,vb.net,sql-server-2008-r2,strongly-typed-dataset,.net,Vb.net,Sql Server 2008 R2,Strongly Typed Dataset,我使用的是强类型数据集作为DAL 我想从我的表中返回一个列,我将代码编写为 SELECT DISTINCT Floor FROM Room WHERE (Building = @Building) 但是当我预览数据时,它会显示表中的所有列,这些列的值为空,而主键为-1的列的值为空 当我将此查询链接到组合框时,此条件引发异常 cmbFloor.DataSource = da.GetFloorByBuilding(cmbBuilding.Text) cmbFlo

我使用的是
强类型数据集
作为DAL

我想从我的表中返回一个列,我将代码编写为

SELECT DISTINCT Floor
FROM            Room
WHERE        (Building = @Building)
但是当我预览数据时,它会显示表中的所有列,这些列的值为空,而主键为-1的列的值为空

当我将此查询链接到组合框时,此条件引发异常

cmbFloor.DataSource = da.GetFloorByBuilding(cmbBuilding.Text)
cmbFloor.DisplayMember = "Floor"
错误:

Failed to enable constraints. One or more rows contain values violating non-null,     unique, or foreign-key constraints.

因为强类型数据集中的每个表都存储为一个类。当查询返回表值或任何标量值时。数据集返回一个包含所有属性的类对象。

您确定类型化数据集上的约束与DB表中的约束相同吗?不,事实并非如此。该约束是因为强类型数据集创建了一个具有tablename的类,并且在数据库中具有所有约束。。但是我已经从数据集文件中删除了像主键这样的约束。。但这在我的例子中也不起作用。您应该添加一个查询,该查询将标量值返回到TableAdapter。不要使用返回多条记录的查询类型,因为TableAdapter使用指定的表模型。但除此之外,如果您想将其用作组合框的数据源,为什么要选择单个值??相反,您应该使用它的和属性。不,它将返回单个列,但包含多行。。。我想使用为特定表创建的同一个表适配器