Mam bardzo podstawowe zapytanie Linq, które nie zwraca ten sam wynik, jeśli I wykonać go lokalnie w Visual Studio lub na serwerze IIS - ale zawsze kierowania na to samo Serwer bazy danych. Użyłem programu SQL Server Profiler do prześledzenia prawdziwego zapytania SQL i okazało się, że nie było to samo podczas wykonywania lokalnie lub zdalnie!Entity Framework: kwerenda LINQ generuje różne SQL między lokalnym wykonaniem i wykonanie serwera
Lokalnie używa łączenia lewego, natomiast zdalnie korzysta z łączenia wewnętrznego - i dlatego lokalnie zwraca rekord, ale nie zdalnie. Myślę, że dobrym zachowaniem byłby drugi, ponieważ zdefiniowałem nieprzeznaczalny klucz obcy między TableA i TableB. Poniżej znajduje się prośba LINQ:
from a in TableA.Include("TableB.TableC")
where a.Id == someId
select a;
W rzeczywistości najpierw dołączyć zawsze tłumaczone na sprzężenie wewnętrzne, ale drugi jest po lewej przyłączyć gdy wykonywane lokalnie.
Ale moim priorytetem jest wiedzieć, dlaczego generuje on inne zapytanie lokalnie i zdalnie. Wersje szkieletu są takie same, wersje frameworkowe Entity są takie same (skopiowane lokalnie) ... Coś musi być innego, ale nie mogę tego znaleźć! Czy masz jakąś wskazówkę?
Z góry dziękuję.
Czy używasz tej samej aplikacji? Jedyną inną rzeczą jest wartość ciągu połączenia? –
Tak ta sama aplikacja i ten sam ciąg połączenia – user1756338
Masz różne instancje aplikacji. Upewnij się, że wdrożyłeś te same złożenia na serwerze zdalnym –