0

我想使用一种形式来添加和编辑数据。所以我有两个这样的构造函数

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 操作上我需要检查该书是否存在于数据库中(这是不必要的数据库往返)还是我应该遵循一些更好的模式?

4

1 回答 1

1

好吧,您正在传递现有Book内容,因此将其作为您正在更新书籍的指标是有意义的。为了可读性,您可以将其包装在一个不错的属性中,例如

public bool IsNew { get { return _book == null; } }

或者为了避免保留对现有书籍的引用,您可以将其设置为在构造函数上设置的可写属性,即

public AddEditForm(IBookRepository repository)
{
    IsNew = true;
    ...
}

public bool IsNew { get; private set; }

我们不需要false在重载的构造函数中将其设置为,因为在 C# 中bool 默认为 false 。

于 2013-10-18T07:54:10.223 回答