0

我在项目中有一个场景,我们需要从数据库中获取所有活动的书籍记录并保存在 observablecollection 中。此 observale Collection 绑定到 WPF 应用程序中的网格控件,用户可以在其中添加删除书籍。我们需要保留集合中所有添加、删除和修改的记录,直到用户点击保存到数据库。我们的约束是书名和书的IBN号必须是唯一的。如果用户添加了已经存在于集合中的具有重复书名的新书,那么我们需要使该对象无效,这样在所有集合对象都无效之前,它将不允许用户保存在数据库中。我知道它可以通过不同的方式实现,我想知道这样做的最佳实践。任何带有 IDataErrorInfo 或企业验证库的解决方案都值得赞赏。

4

1 回答 1

0

您可以像这样很好地使用 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;
        }
    }
}
于 2010-05-13T10:14:37.847 回答