在FormClosing期间保存对数据库的更改失败

时间:2017-08-07 12:56:06

标签: c# database entity-framework

我无法确定以下代码在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是否处置?

编辑:这是一个子窗体,而不是主窗体 - 应用程序在关闭此窗体后继续运行。如果这在某种程度上是相关的。

1 个答案:

答案 0 :(得分:0)

在数据库操作之前放置this.Validate()使其工作。但是,我想知道为什么在这种情况下这是相关的。