Perché EF 6 sta interrogando il database per tutti i record con il seguente codice?DbSet <T>. Dove (dove) .ToList() - perché SQL non include la clausola where?
public virtual List<T> Find(Func<T, bool> where = null)
{
_db.Configuration.LazyLoadingEnabled = false;
if (where == null) throw new NullReferenceException("The 'where' parameter of the Repository.Find() method is null.");
return _dbSet.Where(where).ToList();
}
produce il seguente output
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Sequence] AS [Sequence],
[Extent1].[Description] AS [Description],
[Extent1].[Instructions] AS [Instructions],
[Extent1].[WorkCenterOperationId] AS [WorkCenterOperationId],
[Extent1].[JobId] AS [JobId],
[Extent1].[JobAssemblyId] AS [JobAssemblyId],
[Extent1].[RowVersion] AS [RowVersion]
FROM [dbo].[JobOperations] AS [Extent1]
Due domande:
- Perché non è la query eseguita con l'affermazione in cui?
- Come si ottiene la query da eseguire con l'istruzione where?
Di topic: Qual è lo scopo di impostare un valore predefinito di 'null' per il parametro' where'? – DaveParsons
Non ce n'è uno. :) Sto ancora modificando il metodo e la classe di cui fa parte. Inizialmente avevo l'idea di usare una dichiarazione find con una clausola where opzionale, ma ho optato per un metodo FindAll() separato ma non ho rimosso il valore predefinito per Find. Buona domanda però. –