2009-07-23 69 views
2

dsrm_usersTableAdapters.rm_usersIPTableAdapter _tuser = new dsrm_usersTableAdapters.rm_usersIPTableAdapter();EnforceConstraints問題

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,我試着再給它同樣的erorr。所以EnforceConstraints = false不適用於GetDATA();

那麼我現在可以做什麼?我怎樣才能使用GetData()沒有這個錯誤的ObjectDataSource。

回答

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表,如果你不知道表打印到控制檯的任何錯誤名稱。