Pergunta

Ao escrever SQL manual do seu muito fácil de estimar o tamanho ea forma dos dados retornados por uma consulta. Eu estou encontrando cada vez mais difícil fazer isso com o LINQ para consultas SQL. Às vezes eu acho muito mais dados do que eu estava esperando -. O que pode realmente diminuir um cliente remoto que está acessando um banco de dados diretamente

Eu gostaria de ser capaz de executar uma consulta e, em seguida, dizer exatamente o quanto de dados foi devolvido através do fio, e usar isso para me ajudar a otimizar.

Eu já ligado um registo utilizando o método DataContext.Log, mas isso só me dá uma indicação do SQL enviados, não os dados recebidos.

Todas as dicas?

Foi útil?

Solução

Parece que você pode pegar o SqlConnection do seu DataContext e ligue estatísticas.

Uma das estatísticas é "bytes retornados".

MSDN Fazer a ligação Referência

Outras dicas

Nota: Você precisa lançar a conexão a um SqlConnection se você tiver um existente DataContext

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

, em seguida, recuperar as estatísticas com:

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

Eu não encontrei nenhuma maneira de agarrar o SqlConnection do DataContext, então eu criei o 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();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top