2010-05-12 7 views
0

데이터베이스에서 모든 활성 레코드를 가져 와서 observablecollection을 유지해야하는 프로젝트에서 시나리오가 있습니다. 이 관찰 컬렉션은 사용자가 제거 도서를 추가 할 수있는 WPF 응용 프로그램의 그리드 컨트롤에 바인딩됩니다. 사용자가 데이터베이스에 저장을 누를 때까지 컬렉션에 추가, 제거 및 수정 된 모든 레코드를 유지해야합니다. 우리의 제약은 책 이름이며 책의 IBN 번호는 고유해야합니다. 사용자가 컬렉션에 이미있는 도서 이름이 중복 된 새 책을 추가하는 경우 해당 개체를 무효화해야하므로 모든 컬렉션 개체가 유효하지 않을 때까지 데이터베이스에 저장할 수 없습니다. 다른 방법으로 달성 할 수 있음을 알고 있습니다.이를 수행하는 모범 사례에 대해 알고 싶습니다. IDataErrorInfo 또는 Enterprise Validation Library가 포함 된 솔루션에 만족합니다.컬렉션에서 유니크를 강제하는 방법 아이템

답변

0

당신은 아주 잘 나는이 책 오브젝트가 존재입니다 같은 컬렉션의 다른 책 항목 this.BookName을 비교하는 IsDuplicate (bookname과)의 구현을 찾고이

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

같은 IDataErrorInfo를 사용할 수 있습니까? – sharnol

관련 문제