0

データベースからすべてのアクティブな書籍レコードを取得し、observablecollection に保持する必要があるプロジェクトのシナリオがあります。この観測コレクションは、ユーザーがブックを追加および削除できる WPF アプリケーションのグリッド コントロールにバインドされます。ユーザーがデータベースに保存するまで、コレクション内の追加、削除、および変更されたすべてのレコードを保持する必要があります。私たちの制約は本の名前であり、本の IBN 番号は一意でなければなりません。ユーザーがコレクションに既に存在する重複した本の名前を持つ新しい本を追加する場合、そのオブジェクトを無効にする必要があります。これにより、すべてのコレクション オブジェクトが無効になるまで、ユーザーはデータベースに保存できなくなります。さまざまな方法で達成できることを知っています。これを行うためのベストプラクティスについて知りたいです。IDataErrorInfo または Enterprise Validation Library を使用したソリューションを歓迎します。

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 に答える