How can I test a LINQ Query such as the following:
var vUser = (from u in this.dbName.aspnet_Users
开发者_运维知识库 where u.UserName.Equals(this.wCreateUser.UserName)
select u).Single();
I keep getting a null exception for vUser, however I am positive such a user exists.
Use SQL profiler and see what SQL is fired by your code. You can try LinqPad too to run linq query against a DB.
The record would have to exist or the exception would have to be thrown during evaluation of the lambda, otherwise the exception thrown would be to the effect of
The sequence contains no elements.
Are you accessing any properties on the vUser
object after the query or is the this.wCreateUser
object possibly null?
Edit: for comments..
If the exception is that the sequence contains no elements, the query being generated is not returning a result. I would recommend you examine the query being generated and test it directly against the SQL Server..
You can do this a few ways.
- Open SQL Profiler and watch the query being executed.
- Attach a TextWriter to the DataContext.Log so you can see the output of the query (example below)..
- Use LINQPad as the other answer suggested.
.
StringBuilder sb = new StringBuilder();
StringWriter writer = new StringWriter(sb);
this.dcLAUNCHOnline.Log = writer;
//Execute Query..
//sb.ToString(); //will contain the sql produced by the LINQ Query
精彩评论