Domanda

Quando si scrive SQL manuale è abbastanza semplice stimare la dimensione e la forma dei dati restituiti da una query.Trovo sempre più difficile farlo con le query LINQ to SQL.A volte trovo MOLTI più dati di quanto mi aspettassi, il che può davvero rallentare un client remoto che accede direttamente a un database.

Mi piacerebbe essere in grado di eseguire una query e quindi dire esattamente quanti dati sono stati restituiti attraverso il cavo e utilizzarli per aiutarmi a ottimizzare.

Ho già collegato un registro utilizzando il metodo DataContext.Log, ma questo mi dà solo un'indicazione dell'SQL inviato, non dei dati ricevuti.

Qualche consiglio?

È stato utile?

Soluzione

Sembra che tu possa prendere SqlConnection del tuo DataContext e attivare le statistiche.

Una delle statistiche è "byte restituiti".

Collegamento di riferimento MSDN

Altri suggerimenti

Nota:È necessario trasmettere la connessione a SqlConnection se si dispone di un DataContext esistente

 ((SqlConnection)dc.Connection).StatisticsEnabled = true;

quindi recuperare le statistiche con:

 ((SqlConnection)dc.Connection).RetrieveStatistics()

Non ho trovato modo di acquisire SqlConnection di DataContext, quindi ho creato SqlConnection manualmente:

SqlConnection sqlConnection = new SqlConnection("your_connection_string");
// enable statistics
cn.StatisticsEnabled = true;

// create your DataContext with the SqlConnection
NorthWindDataContext nwContext = new NorthWindDataContext(sqlConnection);

var products = from product in nwContext
               where product.Category.CategoryName = "Beverages"
               select product;
foreach (var product in products)
{
    //do something with product
}

// retrieve statistics - for keys see http://msdn.microsoft.com/en-us/library/7h2ahss8(VS.80).aspx
string bytesSent = sqlConnection.RetrieveStatistics()["BytesSent"].ToString();
string bytesReceived = sqlConnection.RetrieveStatistics()["BytesReceived"].ToString();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top