私は Entity Framework (EF) と LINQ の両方の初心者です。
私の質問は少し長いですが、本当にとてもシンプルです。LINQ を使用して RDBMS からデータを取得するクエリを作成する場合は、次のように言います。
using (MyEntities myEntities = new MyEntities())
{
// ...
var query = from rec in myEntities.SomeTable
where rec.Id == someId
select rec;
// ...
}
最終的に実行されると、これは実際に SQL に変換されて DB 自体で実行されますか (そのマシンがどこにあっても)、または基になるレコードが最初にホスト マシンに実際に取得され、次に実行中のアプリ自体によってフィルター処理されます (何らかの LINQ および/またはを使用) EFマジック)。
IOW、上記の「SomeTable」のすべてのレコードが基になる DB からホスト マシンに取得され、LINQ および/または EF が指定された「someId」を持つレコードの検索を処理するか、または上記のクエリが次のように変換されます。実際の SQL ステートメントであり、DB マシン自体で実行されます (指定されたレコードが返されます)。
後者だと思いますが(そうでなければ非常に非効率的です)、誰かがこれを確認できますか。さらに、LINQクエリがどれほど複雑であっても(複雑な結合などが含まれている可能性があるため)、これは適用されますが、もちろんクエリで呼び出される可能性のあるローカル関数は含まれません。
内部で何が起こっているのか、また LINQ が従来の SQL テキスト クエリの高レベルの代替として効果的に使用できるかどうか (つまり、LINQ は舞台裏で実際の SQL クエリを作成し、それらをDB を実行しますが、クエリでローカル関数呼び出しを処理する場合を除いて、実際の実行自体には参加しません)。前もって感謝します。