Как заставить уникальность в коллекции предметов - PullRequest
0 голосов
/ 12 мая 2010

У меня есть сценарий в проекте, где нам нужно извлечь все активные записи книги из базы данных и сохранить в наблюдаемой коллекции. Эта коллекция наблюдений связана с управлением сеткой в ​​приложении WPF, где пользователь может добавлять и удалять книги. Нам нужно сохранить все добавленные, удаленные и измененные записи в коллекции, пока пользователь не нажмет кнопку сохранения в базе данных. Нашим противопоказанием является название книги, а номер IBN книги должен быть уникальным. Если пользователь добавляет новую книгу с повторяющимся именем книги, которое уже присутствует в коллекции, нам нужно сделать этот объект недействительным, чтобы он не позволил пользователю сохранить в базе данных, пока все объекты коллекции не станут недействительными. Я знаю, что это может быть достигнуто разными способами, я хочу знать о передовых методах для этого. Любое решение с IDataErrorInfo или Enterprise Validation Library приветствуется.

1 Ответ

0 голосов
/ 13 мая 2010

Вы можете очень хорошо использовать IDataErrorInfo, как это

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;
        }
    }
}
...