Может ли ObjectQuery.OrderBy () использовать NEWID ()? - PullRequest
0 голосов
/ 21 июля 2010

Я обнаружил, что Entity SQL поддерживает NEWID (), но поддерживает ли ObjectQuery его также?http://msdn.microsoft.com/en-us/library/bb738616.aspx,

Можно ли написать объектный запрос, например:

context.member.orderby ("NEWID ()"). Select ("it.UserID");

или как то так?или я должен написать по-другому?

Я подумал, что если сущность sql поддерживает функцию NEWID (), она также должна быть принята ObjectQuery.Например, вы можете использовать отдельный (it.UserID) или BitWiseAND (it.UserID, 1) в ObjectQuery.Where () или Select ().

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 02 августа 2010

Спасибо Devart за ответ.

На самом деле я обнаружил, что могу использовать как:

var query1 = context.member.select ("it.userid, SqlServer.NEWID () as newid"). Orderby ("it.newid");

это может сделать случайный порядок для результата, вы обнаружите, что NEWID () находится в переведенном SQL-запросе.

но если вы хотите частично выбрать результат из набора результатов 'query1', вы не можете написать:

var query2 = context.member.select ("it.userid, SqlServer.NEWID () as newid"). Orderby ("it.newid"). Select ("it.userid");

потому что когда вы используете sql profiler для просмотра sql, который транслируется на сервер sql, вы обнаружите, что NEWID () исчезает.

Однако, я думаю, что 'query2' должен иметь смысл. Но это не работает.

0 голосов
/ 27 июля 2010

Это специфическая для SQL Server каноническая функция, поэтому перед ней должен стоять префикс 'SqlServer':

context.member.orderby("SqlServer.NEWID()").select("it.UserID");

К сожалению, это также не будет работать: метод расширения Where требует как минимум одну ссылку наобласть непосредственного ввода.

...