Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用语句逻辑的实体框架_C#_Entity Framework - Fatal编程技术网

C# 使用语句逻辑的实体框架

C# 使用语句逻辑的实体框架,c#,entity-framework,C#,Entity Framework,在实体框架中使用using语句时,它是否在函数返回之前进行处理 例如,假设我有这样的东西 public ActionResult test() { using (var empDb = new empEntities()) { var mod = (from emps in empDb.employees select emps); return View(mod); } } using语句是否在返回视图(mod)之前处理实体

在实体框架中使用using语句时,它是否在函数返回之前进行处理

例如,假设我有这样的东西

public ActionResult test()
{
   using (var empDb = new empEntities())
  {
     var mod = (from emps in empDb.employees 
                select emps);
     return View(mod);
  }
}

using语句是否在返回视图(mod)之前处理实体;还是在视图关闭之前它仍然打开?

通常,当您使用IDisposable对象时,using语句会以正确的方式调用该对象上的Dispose方法,并且一旦调用Dispose,它还会导致对象本身超出范围。在使用块中。
using语句确保即使在调用对象上的方法时发生异常,也会调用Dispose。通过将对象放在try块中,然后在finally块中调用Dispose,可以获得相同的结果;事实上,编译器就是这样翻译using语句的。

Yes。在将模型传递给视图之前,应该将其物化。将视图传递给IQueryable是不好的,因为您是对的,在渲染视图时,上下文已经被释放。视图不应该调用数据库(如果向其传递IQueryable,则会发生这种情况)。您可以使用依赖项注入来交付一个具有请求范围预期寿命的上下文(我使用ninject这样做),这个问题会消失,但我仍然不愿意将一个未实现的查询交给视图。