我发现Entity SQL支持NEWID(),但是ObjectQuery也支持它吗?http://msdn.microsoft.com/en-us/library/bb738616.aspx,
我是否可以像这样编写objectquery:
context.member.orderby("NEWID()").select("it.UserID");
或者像这样的东西?或者我应该用另一种方式写作?
我认为如果entity sql支持NEWID()函数,那么它也应该被ObjectQuery接受。例如,您可以在ObjectQuery.Where()或Select()中使用distinct(it.UserID)或BitWiseAND(it.UserID,1)。
非常感谢。
发布于 2010-07-27 17:28:03
这是特定于SQL Server的规范函数,因此应以‘SqlServer’为前缀:
context.member.orderby("SqlServer.NEWID()").select("it.UserID");不幸的是,这也行不通: Where扩展方法至少需要一个对immediate输入作用域的引用。
发布于 2010-08-02 13:08:13
感谢Devart的回复。
实际上,我发现我可以像这样使用:
var query1 = context.member.select("it.userid,SqlServer.NEWID() as newid").orderby("it.newid");
这可以对结果进行随机排序,您会发现NEWID()在翻译后的sql查询中。
但是如果你想从'query1‘结果集中选择部分结果,你就不能写: write:
newid").orderby("it.newid").select("it.userid");query2 = context.member.select("it.userid,SqlServer.NEWID() as var
因为当您使用sql事件探查器观察转换后的sql传入sql服务器时,您会发现'NEWID()‘消失了。
然而,我认为'query2‘应该是有意义的。但它不起作用。
https://stackoverflow.com/questions/3295626
复制相似问题