我想知道在使用网站的上下文类连接到数据库时,性能和一般最佳实践有何不同。 考虑这两种不同的方法时,最好的方法是什么:
public class Repository()
{
Private Context context;
public List<User> GetUsers()
{
return this.context.Users.ToList();
}
或
public class Repository()
{
public List<User> GetUsers()
{
using (Context context = new context())
{
return context.Users.ToList();
}
}
}
它以 List
或 IEnumerable
形式返回结果是否重要?
最佳答案
复制自MSDN
生命周期
上下文的生命周期从实例创建时开始,到实例被释放或垃圾回收时结束。如果您希望上下文控制的所有资源都在 block 的末尾处理,请使用 using。当你使用 using 时,编译器会自动创建一个 try/finally block ,并在 finally block 中调用 dispose。
using (var context = new ProductContext())
{
// Perform data access using the context
}
在决定上下文的生命周期时,这里有一些通用准则:
在处理长时间运行的上下文时,请考虑以下事项: 当您将更多对象及其引用加载到内存中时,上下文的内存消耗可能会迅速增加。这可能会导致性能问题。 请记住在不再需要时处理上下文。 如果异常导致上下文处于不可恢复的状态,则整个应用程序可能会终止。 随着查询和更新数据的时间间隔的增加,遇到与并发相关的问题的机会也会增加。 在使用 Web 应用程序时,为每个请求使用一个上下文实例。 使用 Windows Presentation Foundation (WPF) 或 Windows 窗体时,请为每个窗体使用一个上下文实例。这使您可以使用上下文提供的更改跟踪功能。
关于c# - 是否有使用数据库上下文类的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21074911/