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 拡張メソッドには、即時入力スコープへの参照が少なくとも 1 つ必要です。

于 2010-07-27T09:28:03.383 に答える
0

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プロファイラーを使用して、変換されたSQLがSQLサーバーに渡されるのを監視すると、「NEWID()」が消えることがわかります。

ただし、「query2」は理にかなっていると思います。しかし、うまくいきません。

于 2010-08-02T05:08:12.610 に答える