Chr*_*ian 3 c# entity-framework dbcontext
我想知道在使用Web站点的上下文类连接到db时,性能和一般最佳实践的差异是什么.考虑这两种不同的方法时,最好的方法是什么:
public class Repository()
{
Private Context context;
public List<User> GetUsers()
{
return this.context.Users.ToList();
}
Run Code Online (Sandbox Code Playgroud)
要么
public class Repository()
{
public List<User> GetUsers()
{
using (Context context = new context())
{
return context.Users.ToList();
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果它将结果作为a List或as 返回是否重要IEnumerable?
从MSDN复制
一生
上下文的生命周期在创建实例时开始,在实例处理或垃圾收集时结束.如果您希望将上下文控制的所有资源放置在块的末尾,请使用.使用时,编译器会自动创建try/finally块并在finally块中调用dispose.
using (var context = new ProductContext())
{
// Perform data access using the context
}
Run Code Online (Sandbox Code Playgroud)
在决定上下文的生命周期时,以下是一些一般性指导原则:
使用长时间运行的上下文时,请考虑以下事项:当您将更多对象及其引用加载到内存中时,上下文的内存消耗可能会迅速增加.这可能会导致性能问题.请记住在不再需要时处理上下文.如果异常导致上下文处于不可恢复状态,则整个应用程序可能会终止.随着查询和更新数据的时间之间的差距的增大,遇到并发相关问题的可能性也会增加. 使用Web应用程序时,请为每个请求使用上下文实例. 使用Windows Presentation Foundation(WPF)或Windows窗体时,请为每个窗体使用上下文实例.这使您可以使用上下文提供的更改跟踪功能.
| 归档时间: |
|
| 查看次数: |
1051 次 |
| 最近记录: |