有没有办法在系统关闭时为所有操作调用SaveChanges()?

时间:2015-07-22 06:54:37

标签: c# entity-framework mvvm

有没有办法在系统关闭时为所有实体调用SaveChanges?

我使用EF6和MVVM模式,我想关闭并保存所有操作到数据库。

我正在尝试使用SessionEndReasons.SystemShutdown但是我需要调用所有保存方法。 EF是否提供某种解决方案来同时保存所有内容?

谢谢

2 个答案:

答案 0 :(得分:2)

我不知道EF提供的功能,但你可以试试这个:

public class foo
{
    static void Main(string[] args)
    {
        // add the exit handler
        AppDomain.CurrentDomain.ProcessExit += new EventHandler (OnProcessExit); 
        // your code
    }

    // will be called on exit
    static void OnProcessExit (object sender, EventArgs e)
    {
        // save your data
        myEntity.SaveChanges();
    }
}

但如果用户杀死了prcess

,则不会调用它

答案 1 :(得分:2)

您可以在applicationExit事件中保存更改:

在你的计划中:

Application.ApplicationExit += new EventHandler(this.OnApplicationExit);

private void OnApplicationExit(object sender, EventArgs e) {

    myContext.SaveChanges();
}

https://msdn.microsoft.com/fr-fr/library/system.windows.forms.application.applicationexit(v=vs.110).aspx