2009-07-23 4 views
2

dsrm_usersTableAdapters.rm_usersIPTableAdapter _tuser = new dsrm_usersTableAdapters.rm_usersIPTableAdapter();EnforceConstraints Problème

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

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

c'est très bien fonctionne; Cependant, lorsque j'utilise ObjectDataSource et que je me connecte à la grille en utilisant la méthode GetData(), cela donne une erreur;

Échec de l'activation des contraintes. Une ou plusieurs lignes contiennent des valeurs qui ne respectent pas les contraintes non nulles, uniques ou de clé étrangère.

Je vais à l'ensemble de données et j'ai défini EnforceConstraints = false dans la fenêtre de propriétés, et j'essaye de donner à nouveau le même erorr. Donc EnforceConstraints = false ne fonctionne pas avec GetDATA();

Alors, que puis-je faire maintenant? Comment puis-je utiliser ObjectDataSource en utilisant GetData() sans cette erreur.

Répondre

1

Je voudrais d'abord essayer de déterminer pourquoi vos contraintes échouent.

Vous pouvez déterminer en

_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)); 
        } 
       } 
      } 
} 

Cela affichera sur la console d'erreurs dans le datatable

Vous pouvez également en boucle à travers » les tables avec ds.Tables si vous ne connaissez pas la table prénom.