それがEntity SQL構文です。Value
キーワードでは 1 つの値のみを指定でき、行ラッパーは追加されません。
ESQL の SELECT ステートメントに関する記事を読む
Entity SQL は、SELECT 句の 2 つのバリアントをサポートしています。最初のバリアントである行選択は、SELECT キーワードによって識別され、射影する必要がある 1 つ以上の値を指定するために使用できます。返される値の周りに行ラッパーが暗黙的に追加されるため、クエリ式の結果は常に行のマルチセットになります。
行選択の各クエリ式では、エイリアスを指定する必要があります。エイリアスが指定されていない場合、Entity SQL は、エイリアス生成規則を使用してエイリアスを生成しようとします。
SELECT 句のもう 1 つのバリアントである値の選択は、SELECT VALUE キーワードによって識別されます。指定できる値は 1 つだけで、行ラッパーは追加されません。
したがって、z
クエリからオブジェクトを具体化する場合は、SELECT VALUE
構文を使用する必要があります (そうしないと、例外が発生します: MaterializedDataRecord から z 型へのキャストは無効です)。
キーワードを指定しないVALUE
と、一連の行が取得されます。
string esql = "SELECT q from x.zs as q where q.a = @parm;";
ObjectQuery<DbDataRecord> query = context
.CreateQuery<DbDataRecord>(esql, new ObjectParameter("parm",parmvalue));
var result = query.First();