我有一個不起作用的簡單LinqToSQL語句。這樣的事:在Visual Studio Debugger中查看Lambdas
List<MyClass> myList = _ctx.DBList
.Where(x => x.AGuidID == paramID)
.Where(x => x.BBoolVal == false)
.ToList();
我看調試器中的_ctx.DBList,第二項適合這兩個參數。
有沒有一種方法可以深入瞭解這個問題?
我有一個不起作用的簡單LinqToSQL語句。這樣的事:在Visual Studio Debugger中查看Lambdas
List<MyClass> myList = _ctx.DBList
.Where(x => x.AGuidID == paramID)
.Where(x => x.BBoolVal == false)
.ToList();
我看調試器中的_ctx.DBList,第二項適合這兩個參數。
有沒有一種方法可以深入瞭解這個問題?
我會將它分成兩個步驟 - 構建查詢,然後分配給列表。這樣你就可以在調試器中查看生成的SQL,看看它是否正確。當我有查詢問題進行調試時,我有時會剪切/粘貼(並修復)到SSMS中。
var q = _ctx.DBList
.Where(x => x.AGuidID == paramID)
.Where(x => x.BBoolVal == false)
// view q in the debugger to see the SQL it will generate
var myList = q.ToList();
你基本上有2個選項。
可以打散的聲明,看看發生了什麼,在每個步驟中產生的:
var p1 = _ctx.DBList.Where(x => x.AGuidID == paramID).ToList();
var p2=p1.Where(x => x.BBoolVal == false).ToList();
// and you just examine each of them in the debugger
// I put ToList() here so you get the actual result
或者你也可以在不同線路上寫你的lambda表達式將斷點設置就可以了,然後通過與步驟代碼重複你會得到更多的信息,但是你很可能不會比上面的2個數組更有用(再加上可能需要很長時間才能得到實際的錯誤)。