EnforceConstraints问题

时间:2009-07-23 08:00:18

标签: c# dataset

dsrm_usersTableAdapters.rm_usersIPTableAdapter _tuser = new dsrm_usersTableAdapters.rm_usersIPTableAdapter();

dsrm_users _dsuser = new dsrm_users();
_dsuser.EnforceConstraints = false;

dsrm_users.rm_usersIPDataTable _muser = _dsuser.rm_usersIP;
_tuser.FillBy(_muser, _IP);

这是非常好的作品;

但是,当我使用ObjectDataSource并使用GetData()方法连接到网格视图时,它会出错;

无法启用约束。一行或多行包含违反非null,唯一或外键约束的值;错误;

我去了数据集,我在属性窗口中设置了EnforceConstraints = false,我尝试再次给它同样的erorr。所以EnforceConstraints = false不适用于GetDATA();

那我现在该怎么办?如何在没有此错误的情况下使用GetData()来使用ObjectDataSource。

1 个答案:

答案 0 :(得分:1)

我首先会尝试确定你的约束失败的原因。

您可以通过

确定
_dsuser.EnforceConstraints = false;
//fill info
try
{
    _dsuser.EnforceConstraints = true;
}
catch
{
            if (ds.HasErrors)
            {
                DataRow[] drs = _dsuser.[datatablename].GetErrors();
                foreach(DataRow dr in drs)
                {
                    foreach(DataColumn dc in dr.GetColumnsInError())
                    {
                        Console.Write(dr.GetColumnError(dc));
                    }
                }
            }
}

这将向控制台打印数据表中的任何错误

如果您不知道表名,也可以使用ds.tables循环表。