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/