假设我有一些保存方法。_context.SaveChanges()
在每个方法结束时调用或将此方法移动到 global.ascx 文件中并仅在应用程序生命周期结束时调用它的更好方法是什么?对性能目的重要吗?
我使用 EF 和 ASP.NET MVC
假设我有一些保存方法。_context.SaveChanges()
在每个方法结束时调用或将此方法移动到 global.ascx 文件中并仅在应用程序生命周期结束时调用它的更好方法是什么?对性能目的重要吗?
我使用 EF 和 ASP.NET MVC
上下文不是线程安全的。因此,对上下文的多次更改可能会引发错误。
我处理这个问题的方式是两种方式之一。控制器/存储库和每个方法。无论哪种方式,我都没有看到任何性能受到影响。我读过的大多数书都倾向于存储库风格,除非你只有 2-3 种使用 EF 的方法。
我在上课前定义了这样的东西
SomeContext context = new SomeContext();
那么我有这样的方法吗?
public void Save()
{
context.SaveChanges();
}
如果你想按照这样的方法来做
using (var context = new SomeContext())
{
// somecode
}
在我看来,您应该将其称为每个更新方法的结束。否则,如果您更改了对象但未保存它,则在应用程序结束之前,该对象不会在数据库中更新。如果另一个进程从数据库请求这个对象,它不会有最新的更改。如果这个过程也修改了这个对象,然后在应用程序结束时保存它,你甚至会得到一个 OptimisticConcurrencyException。