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

  在试着用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与数据库内的字段不一致造成的。

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

 

----------------------以上,如果有什么补充我会更新的

转载于:https://www.cnblogs.com/alasunny/archive/2008/08/27/1277281.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值