使用相同表格时如何知道这是新的还是更新数据

时间:2013-10-18 07:49:35

标签: c# .net winforms

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

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往返)还是我应该更好地遵循一些图案?

1 个答案:

答案 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