Visual Studio または IIS サーバーでローカルに実行すると同じ結果を返さない非常に基本的な Linq クエリがありますが、常に同じデータベース サーバーを対象としています。SQL Server Profiler を使用して、実行された実際の SQL クエリをトレースしたところ、ローカルまたはリモートで実行した場合と同じではないことがわかりました。
ローカルでは左結合を使用し、リモートでは内部結合を使用するため、ローカルではレコードを返しますが、リモートでは返しません。TableA と TableB の間に null 非許容の外部キーを定義したので、良い動作は 2 番目になると思います。以下はLinqリクエストです:
from a in TableA.Include("TableB.TableC")
where a.Id == someId
select a;
実際、最初の結合は常に内部結合に変換されますが、2 番目の結合はローカルで実行すると左結合になります。
しかし、私の優先事項は、ローカルとリモートで異なるクエリを生成する理由を知ることです。フレームワークのバージョンは同じで、エンティティ フレームワークのバージョンも同じです (ローカルにコピーされています)...何かが違うはずですが、何が見つかりません! 手がかりはありますか?
前もって感謝します。