Mar*_*gan 3 c# asp.net-mvc asp.net-web-api
我喜欢在using语句中包含我的数据访问,以使自己对垃圾收集感觉良好.我正在运行Visual Studio 2013 Preview并以.NET 4.5为目标.我有一个叫做WordsController的ApiController:
public class WordsController : ApiController
{
    // GET api/<controller>
    public IEnumerable<Keyword> Get()
    {
        using (TestDataContext dc = new TestDataContext())
        {
            return dc.Keywords;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,告诉我在访问数据之前已经处理了datacontext.
将代码更改为此工作原理:
public class WordsController : ApiController
{
    // GET api/<controller>
    public IEnumerable<Keyword> Get()
    {
        TestDataContext dc = new TestDataContext();
        return dc.Keywords;
    }
}
Run Code Online (Sandbox Code Playgroud)
为什么不在usingDataContext 时才能工作?
return dc.Keywords 
实际上并没有在那里执行查询/实现结果,所以当实际枚举结果时(因此它尝试运行查询),上下文已经被处理掉了.
而是尝试:
using (TestDataContext dc = new TestDataContext())
        {
            return dc.Keywords.ToArray(); // execute the query and materialise NOW
        }
Run Code Online (Sandbox Code Playgroud)
只是在这里添加适当的术语和参考:延期执行
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3601 次  |  
        
|   最近记录:  |