Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;选择值";-LINQ/实体框架查询中的value关键字_Linq_Entity Framework_Linq To Entities - Fatal编程技术网

&引用;选择值";-LINQ/实体框架查询中的value关键字

&引用;选择值";-LINQ/实体框架查询中的value关键字,linq,entity-framework,linq-to-entities,Linq,Entity Framework,Linq To Entities,在这句话中,关键字“value”是什么意思?我应该去哪里了解更多信息? 如果我省略了关键字“value”,会发生什么?在下面的代码中,z是一个实体框架类 string queryString = "SELECT VALUE q from x.zs as q where q.a = @parm;" ObjectQuery<z> query = context.CreateQuery<z> (queryString, new ObjectParameter("par

在这句话中,关键字“value”是什么意思?我应该去哪里了解更多信息?
如果我省略了关键字“value”,会发生什么?在下面的代码中,z是一个实体框架类

string queryString = "SELECT VALUE q from x.zs as q where q.a = @parm;"
ObjectQuery<z> query = context.CreateQuery<z> 
    (queryString, new ObjectParameter("parmname",parmvalue)); 
return query.First(); 
string queryString=“从x.zs中选择值q作为q,其中q.a=@parm;”
ObjectQuery=context.CreateQuery
(queryString,新的ObjectParameter(“parmname”,parmvalue));
返回query.First();
(这是考试练习题的一部分)

上述代码位于返回z类型变量的函数中

这就是语法
Value
关键字只允许指定一个值,不添加行包装器

阅读

实体SQL支持SELECT子句的两种变体。第一 变量row select由select关键字标识,可以 用于指定应投影的一个或多个值。 因为行包装器是围绕返回的值隐式添加的, 查询表达式的结果始终是多行集

行select中的每个查询表达式都必须指定一个别名。如果没有 如果指定了别名,实体SQL将尝试使用 别名生成规则

SELECT子句的另一个变体value SELECT由 选择值关键字。它只允许指定一个值, 并且不添加行包装器

因此,如果要从查询中具体化
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();
string esql=“从x.zs中选择q作为q,其中q.a=@parm;”;
ObjectQuery=上下文
.CreateQuery(esql,新对象参数(“parm”,parmvalue));
var result=query.First();