如何全面测试ASP.NET中复杂LINQ查询的执行效率和准确性?
- 内容介绍
- 文章标签
- 相关推荐
本文共计302个文字,预计阅读时间需要2分钟。
如何测试LINQ查询,如下所示:csharpvar vUser=(from u in this.dbName.aspnet_Users where u.UserName.Equals(this.wCreateUser.UserName) select u).Single();我直接得到vUser的null异常,但我觉得这样用户应该存在。记录如下:
如何测试LINQ查询,如下所示:var vUser = (from u in this.dbName.aspnet_Users where u.UserName.Equals(this.wCreateUser.UserName) select u).Single();
我一直得到vUser的null异常,但是我很肯定这样的用户存在.
记录必须存在或者在评估lambda期间必须抛出异常,否则抛出的异常将是The sequence contains no elements.
您是在查询后访问vUser对象上的任何属性,还是this.wCreateUser对象可能为null?
编辑:评论..
如果异常是序列不包含元素,则生成的查询不返回结果.我建议您检查生成的查询并直接针对SQL Server进行测试.
你可以通过几种方式做到这一点.
>打开SQL Profiler并观看
正在执行的查询.
>将TextWriter附加到DataContext.Log,以便您可以看到
查询的输出(例如
下面)..
>使用LINQPad作为建议的其他答案.
.
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
本文共计302个文字,预计阅读时间需要2分钟。
如何测试LINQ查询,如下所示:csharpvar vUser=(from u in this.dbName.aspnet_Users where u.UserName.Equals(this.wCreateUser.UserName) select u).Single();我直接得到vUser的null异常,但我觉得这样用户应该存在。记录如下:
如何测试LINQ查询,如下所示:var vUser = (from u in this.dbName.aspnet_Users where u.UserName.Equals(this.wCreateUser.UserName) select u).Single();
我一直得到vUser的null异常,但是我很肯定这样的用户存在.
记录必须存在或者在评估lambda期间必须抛出异常,否则抛出的异常将是The sequence contains no elements.
您是在查询后访问vUser对象上的任何属性,还是this.wCreateUser对象可能为null?
编辑:评论..
如果异常是序列不包含元素,则生成的查询不返回结果.我建议您检查生成的查询并直接针对SQL Server进行测试.
你可以通过几种方式做到这一点.
>打开SQL Profiler并观看
正在执行的查询.
>将TextWriter附加到DataContext.Log,以便您可以看到
查询的输出(例如
下面)..
>使用LINQPad作为建议的其他答案.
.
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

