0

假设我有一些保存方法。_context.SaveChanges()在每个方法结束时调用或将此方法移动到 global.ascx 文件中并仅在应用程序生命周期结束时调用它的更好方法是什么?对性能目的重要吗?

我使用 EF 和 ASP.NET MVC

4

2 回答 2

0

上下文不是线程安全的。因此,对上下文的多次更改可能会引发错误。

我处理这个问题的方式是两种方式之一。控制器/存储库和每个方法。无论哪种方式,我都没有看到任何性能受到影响。我读过的大多数书都倾向于存储库风格,除非你只有 2-3 种使用 EF 的方法。

我在上课前定义了这样的东西

SomeContext context = new SomeContext();  

那么我有这样的方法吗?

public void Save()
{
    context.SaveChanges();
}

如果你想按照这样的方法来做

using (var context = new SomeContext())
{
  // somecode
}
于 2012-10-05T14:10:50.300 回答
0

在我看来,您应该将其称为每个更新方法的结束。否则,如果您更改了对象但未保存它,则在应用程序结束之前,该对象不会在数据库中更新。如果另一个进程从数据库请求这个对象,它不会有最新的更改。如果这个过程也修改了这个对象,然后在应用程序结束时保存它,你甚至会得到一个 OptimisticConcurrencyException。

于 2012-10-05T14:04:00.973 回答