我想使用一种形式来添加和编辑数据。所以我有两个这样的构造函数
public AddEditForm(IBookRepository repository)
{
InitializeComponent();
this.repository = repository;
}
public AddEditForm(IBookRepository repository, Book book)
: this(repository)
{
Book data = repository.GetDetails(book.Id);
if (data != null)
{
PopulateFormFields(data);
}
else
{
MessageBox.Show("Could'nt find requested book!");
}
}
我的问题是,当用户点击确定按钮时,我怎么知道这个新记录或更新动作?
我应该使用将在使用第二个构造函数时填充的私有Book _Book
属性,并且在btn ok操作中我需要检查数据库中是否存在该书(这是不必要的db往返)还是我应该更好地遵循一些图案?
答案 0 :(得分:1)
嗯,你传递的是现有的Book
,因此有必要将其作为更新一本书的指标。为了便于阅读,您可以将其包装在一个不错的属性中,例如
public bool IsNew { get { return _book == null; } }
或者为了避免保留对现有书籍的引用,你可以使它成为一个可写的属性,它可以在构造函数上设置,即
public AddEditForm(IBookRepository repository)
{
IsNew = true;
...
}
public bool IsNew { get; private set; }
我们无需在重载的构造函数中将其设置为false
,因为C#中的bool
defaults to false。