阿拉随笔

博客园 首页 新随笔 联系 订阅 管理
  在试着用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与数据库内的字段不一致造成的。

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

 

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

posted on 2008-08-27 08:54  alasunny  阅读(1379)  评论(0编辑  收藏  举报