关于强类型Dataset出错提示未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值

文章详细介绍了在使用强类型Dataset时遇到的错误,并提供了多种解决方案,包括修改xsd文件、重新生成匹配结果集的强类型DataTable等方法,帮助开发者解决与数据库字段不一致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  在试着用DataSet强类型来制作Data层,完全交给Dataset的TableAdapter来操作。

但是在使用更新,和自定义的查询方法的时候,一直提示“强类型Dataset出错提示未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值”这样一个错误。

    我一直在网上游啊游啊,找啊找啊,没找到解决方法:

    一般大家提出这几种解决方法:

    1,把dataset的enforcecontraints设为false。(强制关系约束属性关闭)

    2----------------------------------------------------------------------

 

强类型的DataTable和SQL语句查询出的结果不匹配。简单说就是强类型的DataTable比SQL语句查询出来的结果集要多一些数据列。

解决的办法是重新生成匹配结果集的强类型DataTable。具体方法如下:

在你的.xsd文件里找到出问题的那张表,使用Shift键配合鼠标选中全部的列,然后按Delete删除,然后鼠标右键点击表头,然后在菜单中选择“配置”,然后点击“完成”按钮,重新生成强类型DateTable即可。

使用以上方法的前提是,SelectCommand命令里的SQL语句是类似Select * FROM Table这样的语句。如果没有使用通配符,那就得再修改下SQL语句了,然后再重新生成强类型的DataTable。

 

//////

另外也可能是主键不对应,主键唯一,但select的结果却不唯一。更改数据集.xsd文件中的相关表的主键设置就可以。

--这个方法也试过,修改xsd文件中的相关表的主键设置;选中全部的列,然后按Delete删除,再重新生成,也不行(删除提示不能删除)。

--------------------------------------------------------------------------------------------------

    3、在DataSet里面把列删掉,然后重新生成。我试过,删不掉,删了提示不能删除等错误信息.

    4、清除表的视图状态。dataset.table.clear()。//这个我也试验过,也不行

 

    5、我没辙了,很多方法试验过了,删除了TableAdapter,重新生成。好了。

    反正引起原因就是你的命令生成的TableAdapter与数据库内的字段不一致造成的。

有没有其他解决方法我还得试验一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值