2008-09-18 11 views
2

Lors de l'écriture manuelle de SQL, il est assez facile d'estimer la taille et la forme des données renvoyées par une requête. Je trouve de plus en plus difficile de le faire avec les requêtes LINQ to SQL. Parfois, je trouve plus de données que ce à quoi je m'attendais, ce qui peut vraiment ralentir un client distant qui accède directement à une base de données. Je voudrais être en mesure d'exécuter une requête, puis dire exactement combien de données ont été renvoyées à travers le fil, et l'utiliser pour m'aider à optimiser.Comment déterminer la taille en octets d'un ensemble de résultats de LINQ à SQL

J'ai déjà connecté un journal en utilisant la méthode DataContext.Log, mais cela ne me donne qu'une indication du SQL envoyé, pas des données reçues.

Des conseils?

Répondre

2

On dirait que vous pouvez saisir la SqlConnection de votre DataContext et activer les statistiques.

L'une des statistiques est "octets retournés".

MSDN Reference Link

0

J'ai trouvé aucun moyen de saisir la SqlConnection du DataContext, donc je créé le SqlConnection manuellement:

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(); 
1

Note: Vous devez jeter la connexion à un SqlConnection si vous avez un existant DataContext

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

puis récupérer les statistiques avec:

((SqlConnection)dc.Connection).RetrieveStatistics() 
Questions connexes