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
在数据库视图上使用选择器LINQ的不同结果_Linq_Entity Framework - Fatal编程技术网

在数据库视图上使用选择器LINQ的不同结果

在数据库视图上使用选择器LINQ的不同结果,linq,entity-framework,Linq,Entity Framework,当我针对数据库(oracle)视图使用 我得到相同的结果(行) 与 from f in MYVIEW where f.Order=="HERE" select f.ColA 我得到了可乐的正确结果 我知道这一定是个新手问题。仍在学习…提前感谢原因是默认情况下EF需要唯一地标识每个记录。因此,每个实体都必须具有唯一的密钥。视图没有键,因此EF通过使用不包含二进制数据的所有不可为空的列来推断键。现在EF希望这些列将使实体唯一可识别。如果他们不这样做,您将以您在第一个示例中看到的问题结束。当EF从结

当我针对数据库(oracle)视图使用

我得到相同的结果(行)

from f in MYVIEW
where f.Order=="HERE"
select f.ColA
我得到了可乐的正确结果


我知道这一定是个新手问题。仍在学习…提前感谢

原因是默认情况下EF需要唯一地标识每个记录。因此,每个实体都必须具有唯一的密钥。视图没有键,因此EF通过使用不包含二进制数据的所有不可为空的列来推断键。现在EF希望这些列将使实体唯一可识别。如果他们不这样做,您将以您在第一个示例中看到的问题结束。当EF从结果集中读取实体时,检查键,如果已创建具有相同键的实体,则使用该实例,而不是创建新实例->结果集中具有相同键列值的所有记录将由相同的实体实例表示。我今天描述了


第二个示例使用投影。在这种情况下,不会构造实体实例,EF只返回值

你的问题是什么?在第一个查询中,我的可乐返回每一行的车,车,车。第二个查询ColA返回Car、Boat、Bike…等等,这反映了SQL根据视图返回的内容。
from f in MYVIEW
where f.Order=="HERE"
select f.ColA