J'utilise Linq-To-Sql pour remplir ma couche de gestion. Voici un extrait d'une requête, je travaille sur:Comment puis-je optimiser cette requête LINQ pour n'exécuter qu'une seule commande SQL?
fund.FundEntities = fundGroup.tFunds
.Select(fe =>
{
var fundEntity = new FundEntity()
{
BankAccount = null,
CloseDate = fe.closeDate ?? new DateTime(),
Commitment = fe.commitment ?? 0,
CommitmentEndDate = fe.closeDate ?? new DateTime(),
Fund = fund
};
fundEntity.CapitalCalls = fe.tCapitalCalls
.Select(cc =>
{
return new CapitalCall()
{
Amount = cc.agrAmount ?? 0,
FundEntity = fundEntity
};
}
);
return fundEntity;
});
Quand je lance ce code, il exécute des requêtes pour CapitalCalls individuelles lors de l'exécution. Y at-il de toute façon que je puisse réorganiser cela pour conserver la même structure d'objet métier (IE- les relations de Fund -> FundEntity -> CapitalCall dans les objets métier), mais charger des tables complètes à la fois? Idéalement, il y aurait une seule requête SQL avec beaucoup de jointures qui se traduirait par un fonds entièrement rempli.
Quel est le raisonnement derrière l'appel à ToList()? –
parce que la propriété CapitalCall sur FundEntity est de type Liste –
Shawn
Hrmm Je suppose que je pourrais les rendre IEnumberable, mais ils sont encore interrogés 1 par 1 au moment de l'exécution ... – Shawn