[Entity Framework與LINQ開發實戰]EF與 LinqToSQL對隨機排序支援的差異

[Entity Framework與LINQ開發實戰]EF與 LinqToSQL對隨機排序支援的差異

在使用Linq對Object做排序時,我們可以下 Model.OrderBy(p=>Guid.NewGuid()); 來達成

但如果想把隨機排序在資料庫層級就做好時,需要注意ORM對語法的支援問題。

 

在 EntityFramework 4之前的版本,如果下這樣的語法,在執行時會出現下面的錯誤:

image

 

而在EntityFramework 4以後的版本,則可以正常的運作,所產生出來的SQL語法如下:

image

 

但如果是LinqToSQL,則執行時不會有錯誤,但所產生的SQL語法也沒有排序的效果

如下圖:

image

 

 

 

 

結論是:

EntityFramework 4 以前   -> 不能使用,會報錯誤

EntityFramework 4 以後   -> 可以使用,正常支援

LinqToSQL  -> 不支援,但也不會報錯