C# 当使用相同的表单时,如何知道这是新数据还是更新数据
我想使用一个表单来添加和编辑数据。我有两个这样的构造函数C# 当使用相同的表单时,如何知道这是新数据还是更新数据,c#,.net,winforms,C#,.net,Winforms,我想使用一个表单来添加和编辑数据。我有两个这样的构造函数 public AddEditForm(IBookRepository repository) { InitializeComponent(); this.repository = repository; } public AddEditForm(IBookRepository repository, Book book) : this(repository) { Book
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!");
}
}
我的问题是,当用户点击ok按钮时,我怎么知道这是新记录还是更新操作
我应该使用private
Book\u Book
属性吗?该属性将在使用第二个构造函数时填充,在btn ok操作中,我需要检查数据库中是否存在该书(这是不必要的db往返)或者我应该遵循一些更好的模式?好吧,您正在传递一本现有的书籍,因此这将是您正在更新书籍的指标。为了可读性,你可以把它包装在一个好的属性中,例如
public bool IsNew { get { return _book == null; } }
或者,为了避免保留对现有书籍的引用,您可以将其设置为可写属性,并在构造函数上设置get,即
public AddEditForm(IBookRepository repository)
{
IsNew = true;
...
}
public bool IsNew { get; private set; }
我们不需要在重载构造函数中将其设置为false
,因为C#中的bool