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