2010-05-12 3 views
0

J'ai un scénario dans le projet où nous devons extraire tous les enregistrements de livres actifs de la base de données et les conserver dans observablecollection. Cette collection observale est liée au contrôle de grille dans l'application WPF où l'utilisateur peut ajouter supprimer des livres. Nous devons conserver tous les enregistrements ajoutés, supprimés et modifiés dans la collection jusqu'à ce que l'utilisateur clique sur la sauvegarde dans la base de données. Notre contrainte est le nom du livre et le numéro IBN du livre doit être unique. Si l'utilisateur ajoute un nouveau livre avec un nom de livre déjà présent dans la collection, nous devons invalider cet objet, afin qu'il ne permette pas à l'utilisateur d'enregistrer dans la base de données tant que tous les objets de collection ne sont pas valides. Je sais que cela peut être réalisé de différentes façons, je veux savoir sur les meilleures pratiques pour ce faire. Toute solution avec IDataErrorInfo ou Enterprise Validation Library est appréciée.Comment forcer l'unicité dans la collection Elément

Répondre

0

Vous pouvez très bien utiliser IDataErrorInfo comme ça

public class Book : IDataErrorInfo 
{ 
    public string BookName { get; set; } 
    public string IBN { get; set; } 

    public string Error 
    { 
     get { throw new NotImplementedException(); } 
    } 

    public string this[string columnName] 
    { 
     get 
     { 
      string result = null; 

      switch(columnName)  
      {   
       case "BookName": 
        result = IsDuplicate(BookName) ? "Already Present" : null; 
        break;     
       case "IBN":    
        result = IsDuplicate(IBN) ? "Already Present" : null; 
        break; 
       default:    
        break;  
      } 
      return result; 
     } 
    } 
} 
+0

Je cherche la mise en œuvre de IsDuplicate (BookName) pour comparer this.BookName avec d'autres articles dans la même collection livre où cet objet du livre est existe? – sharnol