如果重要的话,我正在安装了.NET 4.5的Windows 8计算机上运行在VS 2010 SP 1中针对.NET 3.5编译的C#项目。
我的方法如下所示:
private IEnumerable<TModel> ExecuteAndGet<TModel>(string name, IEnumerable<SqlParameter> parameters)
where TModel : new()
{ // <-- Breakpoint 1
// Non-trivial code so I doubt the method call is being optimized away
// Or something if that's even possible.
}
在同一个班级中,我用不同的方法调用ExecuteAndGet
,如下所示:
this.ExecuteAndGet<object>("[dbo].[SomeStoredProcedure]", parameters); // <-- Breakpoint 2
这绝对是该方法的唯一重载。在调试模式下运行程序时,我点击了断点2.我尝试了常规的“F5”和“Step INTO”,但它完全跳过了方法,它跳过了断点1.我不知道为什么会发生这种情况。对ExecuteAndGet
的其他调用正在发挥作用,我不明白为什么这有任何不同。请帮帮忙?
感谢。
答案 0 :(得分:3)
你实际上并没有枚举。尝试:
this.ExecuteAndGet<object>("[dbo].[SomeStoredProcedure]", parameters).ToList();
答案 1 :(得分:1)
返回的可枚举实现为迭代器块。迭代器块内的代码在第一次枚举之前实际上不会执行,例如添加致电.ToArray()
或.ToList()