【发布时间】:2014-09-17 15:48:20
【问题描述】:
当我在事件 ID 列上组合许多表时,我在使用 Entity Framework 中的 distinct() 时遇到了问题,因此我决定改为在数据库中创建一个视图,我只需将其拉入 EF 并显示在数据网格上。
EF 给了我一个我不知道如何解决的问题,即使我拉取了 EF 生成的 SQL,我仍然没有看到其中的 sql 命令有什么奇怪的地方......
所以我在数据库中的视图会生成如下内容:
oID TIME LOC NETVAL INDIVALUE COUNT
01 10:00 A 0.803 0.803 6
02 8:00 B 1.164 1.164 1
02 8:00 B 1.164 1.252 1
02 8:00 B 6.012 1.164 1
02 8:00 B 6.099 6.099 1
但是,当我使用 EF toList() 时,视图:
var query = context.MY_VIEW.toList();
datagridview1.DataSource = query;
我明白了:
oID TIME LOC NETVAL INDIVALUE COUNT
01 10:00 A 0.803 0.803 6
02 8:00 B 1.164 1.164 1
02 8:00 B 1.164 1.164 1
02 8:00 B 1.164 1.164 1
02 8:00 B 1.164 1.164 1
我还检查了EF生成的sql,没有发现异常,只是select from的简单嵌套语句......
【问题讨论】:
-
您好像缺少 PrimaryKey。
-
哦,那我也应该为视图设置主键吗?据我所知,我用来创建视图的表中的数据列没有键。
-
参考此链接解决您的问题。我曾经有过类似的问题。 girlfromoutofthisworld.com/…
-
爱你,伙计,非常感谢,你能发布你的答案,这样当我得到这个工作时我可以投票回答吗?
-
不确定您是否还在,但弹出另一个问题...只有 oID col 是 PK,其余的是可为空的值,我什至无法为 netval 和 indivalue 创建 PK如果我想尝试使它们成为复合键....有没有办法为 oracle 获取 rowID?
标签: c# sql database oracle entity-framework