【问题标题】:EnforceConstraints Problem强制约束问题
【发布时间】:2015-04-17 21:12:03
【问题描述】:

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() 方法连接到网格视图时,它会出错;

未能启用约束。一行或多行包含违反非空、唯一或外键约束的值错误;

我转到 Dataset 并在 Property Window 中设置 EnforceConstraints=false ,然后我尝试再次给出相同的错误。所以 EnforceConstraints=false 不适用于 GetDATA();

那我现在能做什么?如何使用 GetData() 使用 ObjectDataSource 而不会出现此错误。

【问题讨论】:

    标签: c# dataset


    【解决方案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 遍历表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-06
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多