我有一个视图,其中一个连接列可以为空,但通常是两行之间唯一的区别项。我看到 EF 从视图中的所有不可为空的项目中构建了一个主键。我注意到当我从视图中拉出时,这个可为空的列并不总是正确返回,我读到它与它映射到键的方式有关,如果它看到键将返回同一行已经存在。
理想情况下,最好的解决方案是让我的列不可为空,但我不能这样做而不引起更大的问题。
另一个想法是用来ROW_NUMBER()
制作主键。我不确定这是否会导致类似的问题(如果在调用之间没有刷新上下文,它会完全关闭还是足够聪明地意识到查询是不同的?)我也担心需要一个ORDER BY
for函数以及这将如何影响行的动态排序。
确保我的所有行都完全按照它们通过 SQL 查询出现的方式返回,并且对性能的影响最小的最佳方法是什么?
谢谢..
例子:
view: A int, B int, C int?
SQL Results:
1, 2, null
1, 3, 10
1, 3, 11
EF 将返回如下内容:
1, 2, null
1, 3, 10
1, 3, 10
我也需要得到那个11。