Avevo bisogno di scrivere una query dinamica sul database clienti per ottenere pochi campi di un cliente.Prestazioni di IQueryable
seguito è riportato il codice di
[Route("api/getBasicCustList/{argType}/{argValue}")]
[HttpGet]
[Authorize]
public dynamic getCustomerDataUsername(String argType, String argValue)
{
IQueryable<CustomerDTO> query =
(from recordset in db.Customers
select new CustomerDTO
{
companyId = recordset.Company.Id,
contactNum = recordset.ContactNum,
username = recordset.UserName,
emailAddress = recordset.Email,
fullName = recordset.FullName,
accountNumber = recordset.RCustId
}
);
switch (argType)
{
case "username" :
query = query.Where(c => c.username.StartsWith(argValue));
break;
case "contactnum":
long mobNum = Int64.Parse(argValue);
query = query.Where(c => c.contactNum == mobNum);
break;
case "fullname":
query = query.Where(c => c.fullName.Contains(argValue));
break;
}
return new { data = query.ToList() };
}
questo funziona bene e sta risolvendo il mio scopo.
la mia domanda qui è quando scrivo la mia prima parte della query
per ottenere tutti i record dei clienti e successivamente applicare sulle cui condizioni dinamicamente saranno i risultati portati in memoria o la query completa viene generato ed eseguiti al db in un colpo?
Dal momento che ho appena 500 record, non sono in grado di trovare alcun ritardo di prestazioni, ma quando porterò questo alla produzione avrò a che fare con almeno 200.000 a 300.000 record.
La query non verrà eseguita finché non si raggiunge tale "Elenco degli utenti" alla fine del metodo. – Kinetic
oh Bene. !! Potete voi o chiunque altro per favore fornire un link da msdn o qualsiasi articolo online che lo confermi. grazie. –
Qui vai [Query Execution] (https://msdn.microsoft.com/en-us/library/bb738633 (v = vs.100) .aspx). –