Asp.net mvc 何时需要调用SaveChanges方法?
假设我有一些保存方法。在每个方法的末尾调用Asp.net mvc 何时需要调用SaveChanges方法?,asp.net-mvc,entity-framework-4,Asp.net Mvc,Entity Framework 4,假设我有一些保存方法。在每个方法的末尾调用\u context.SaveChanges(),或者在global.ascx文件中移动此方法,并在应用程序生命周期结束时仅调用一次,这样做更好吗?它对性能目标重要吗 我使用EF和ASP.NET MVC在我看来,您应该将其称为每个更新方法的结束。否则,如果更改了对象而未保存,则在应用程序结束之前,该对象不会在数据库中更新。如果另一个进程从数据库请求此对象,它将不会有最新的更改。如果此进程还修改此对象,然后在应用程序结束时保存它,您甚至会得到一个Optim
\u context.SaveChanges()
,或者在global.ascx文件中移动此方法,并在应用程序生命周期结束时仅调用一次,这样做更好吗?它对性能目标重要吗
我使用EF和ASP.NET MVC在我看来,您应该将其称为每个更新方法的结束。否则,如果更改了对象而未保存,则在应用程序结束之前,该对象不会在数据库中更新。如果另一个进程从数据库请求此对象,它将不会有最新的更改。如果此进程还修改此对象,然后在应用程序结束时保存它,您甚至会得到一个OptimisticConcurrencyException。上下文不是线程安全的。因此,对上下文的多次更改可能会引发错误 我处理这件事的方式有两种。控制器/存储库和每个方法。我没有看到任何性能击中任何方式。我读过的大多数书都倾向于存储库风格,除非你只有2-3种使用EF的方法 我在上课前定义了这样的东西
SomeContext context = new SomeContext();
那么我有一个这样的方法
public void Save()
{
context.SaveChanges();
}
如果你想用这样的方法来做
using (var context = new SomeContext())
{
// somecode
}
好的,但我每次调用save方法时都会重新创建上下文(和sql连接)。我认为这对性能不好(如果我有不止一种保存方法)