dsrm_usersTableAdapters.rm_usersIPTableAdapter _tuser =新的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()方法连接到网格视图时,会出现错误。

无法启用约束。一或多个行包含违反非空,唯一或外键约束的值。

我转到数据集,并在“属性窗口”中设置EnforceConstraints = false,然后尝试再次给它同样的错误。因此EnforceConstraints = false不适用于GetDATA();

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

最佳答案

我将首先尝试确定您的约束为何失败。

您可以通过以下方式确定

_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遍历表。

关于c# - 强制约束问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1170318/

10-17 02:03