Si j'ai le code suivant
MyDataContext _dataContext = new MyDataContext(MyConnectionSsortingng); List<Airplane> entireTable = _dataContext.AirPlanes List<Airplane> propellerPlanes = new List<Airplane>(); foreach(AirPlane p in entireTable){ if(p.IsPropellerPlane) propellerPlanes.Add(p); }
Lorsque ce code s'exécute, je suppose que la puissance de traitement de la requête provient de l'ordinateur exécutant le programme.
Mais quand ce code s'exécute:
List<Airplane> propellerPlanes = _dataContext.Airplanes.Where(a => a.IsPropellerPlane).ToList();
La puissance de traitement exécute-t-elle la requête provenant de l'ordinateur exécutant le programme ou de l'ordinateur sur lequel SQL Server est installé et auquel je me suis connecté dans ma string de connection?
Je suppose que vous parlez de Linq to SQL (il y a d'autres adaptateurs), dans ce cas, le driver Linq to Sql traduit la requête Linq en une requête Sql normale pour la plupart.
Donc, pour répondre à la question, la plupart du travail sera effectué par l'ordinateur qui exécute le server Sql.
Cela dépend du fournisseur de requête. Habituellement, le point d'avoir un fournisseur de requête transmet la requête à une autre machine. Le fournisseur contrôle tout. Certaines parties de la requête peuvent s'exécuter sur le client. LINQ to SQL a été capable de faire cela. Dans tous les cas, au less quelques cycles seront passés dans le fournisseur en tant que surcharge ou pour fournir des fonctionnalités telles que le suivi d'entité.