我无法确定以下代码在FormClosing事件期间无法保存对数据库的更改的原因:
private void frmClient_FormClosing(object sender, FormClosingEventArgs e)
{
if (bAreChanges)
{
DialogResult dialogResult = MessageBox.Show("Do you wish to save the changes to the database?",
"Confirmation", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (dialogResult == DialogResult.Yes)
{
using (var context = new SomeEntities()) {
var value = "abc";
context.sometable.Add(new sometable() {somefield = value} );
context.SaveChanges();
//the same exact code works when executed from a simple button click that is placed on this form.
}
this.Validate(); // even added this line as suggested in another Stackoverflow question
}
else if (dialogResult == DialogResult.No)
{
}
else
{
e.Cancel = true;
}
}
}
也许SaveChanges()的某些部分是异步的,因此在执行数据库操作之前,Form是否处置?
编辑:这是一个子窗体,而不是主窗体 - 应用程序在关闭此窗体后继续运行。如果这在某种程度上是相关的。
答案 0 :(得分:0)
在数据库操作之前放置this.Validate()
使其工作。但是,我想知道为什么在这种情况下这是相关的。