代码改变世界

EntityFramework 4.x 使用中遇到的问题 (2)

2012-04-26 20:01  FMax  阅读(218)  评论(0编辑  收藏  举报

Single(), SingleOrDefault(), First() & FirstOrDefault()的区别

先说XXX() & XXXOrDefault()的区别,这个很好理解,无论Single() or First(),当数据源不存在数据时,将会抛出异常。所以多数情况下,我们一般会选用XXXOrDefault()方法。

再说Single() 与 First()的区别:

当调用Single()方法的时候,生成的sql语句会类似:SELECT TOP 2 .... FROM ...;而First()的sql语句却是:SELECT TOP 1 ... FROM ...。First的语义是从若干数据里取出第一笔记录,而Single的意思是应该有且只有一笔记录,所以这个方法生成的sql会是TOP 2,当返回的数据有2笔时,则会抛出异常。