我在项目中有一个场景,我们需要从数据库中获取所有活动的书记录并保存在observablecollection中。这个observale Collection绑定到WPF应用程序中的网格控件,用户可以在其中添加删除书籍。我们需要在收集中保留所有添加,删除和修改的记录,直到用户点击保存到数据库。 我们的约束是书名,IBN书的数量必须是唯一的。如果用户添加具有已存在于集合中的重复书名的新书,则我们需要使该对象无效,以便在所有集合对象无效之前不允许用户保存在数据库中。 我知道它可以通过不同的方式实现,我想知道这样做的最佳实践。任何有IDataErrorInfo或企业验证库的解决方案都很受欢迎。
答案 0 :(得分: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;
}
}
}