0

我发现 Entity SQL 支持 NEWID(),但是 ObjectQuery 也支持它吗? http://msdn.microsoft.com/en-us/library/bb738616.aspx

我可以像这样写objectquery:

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

或类似的东西?或者我应该以其他方式写?

我想如果实体 sql 支持 NEWID() 函数,它也应该被 ObjectQuery 接受。就像您可以在 ObjectQuery.Where() 或 Select() 中使用 distinct(it.UserID) 或 BitWiseAND(it.UserID, 1)。

非常感谢。

4

2 回答 2

0

这是一个特定于 SQL Server 的规范函数,因此应以“SqlServer”为前缀:

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

不幸的是,这也不起作用:Where 扩展方法需要至少一个对直接输入范围的引用。

于 2010-07-27T09:28:03.383 回答
0

感谢德瓦特的回复。

实际上,我发现我可以像这样使用:

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 server 时,你会发现 'NEWID()' 消失了。

但是,我认为“query2”应该是有道理的。但它不起作用。

于 2010-08-02T05:08:12.610 回答