我有一个非常基本的Linq查询,如果我在Visual Studio本地执行或在IIS服务器上执行,它不会返回相同的结果 - 但始终针对同一数据库服务器。
我使用SQL Server Profiler跟踪实际执行的SQL查询,并发现在本地或远程执行时它们并不相同!
本地查询使用了Left join,而远程查询使用了Inner join - 因此本地返回记录,但远程不返回。我认为第二种行为是好的,因为我在TableA和TableB之间定义了非空外键。以下是Linq请求:
from a in TableA.Include("TableB.TableC")
where a.Id == someId
select a;
事实上,第一个连接始终被翻译为内部连接,但在本地执行时,第二个连接是左连接。
但我的优先级是了解为什么会在本地和远程生成不同的查询。框架版本相同,Entity Framework版本相同(在本地复制)...一定有所不同,但我找不到哪里不同!你有任何线索吗?
提前谢谢。