Question

Lors de l'écriture manuelle en SQL, il est assez facile d'estimer la taille et la forme des données renvoyées par une requête. J'ai de plus en plus de difficulté à faire cela avec les requêtes LINQ to SQL. Parfois, je trouve WAY plus de données que prévu, ce qui peut vraiment ralentir un client distant qui accède directement à une base de données.

J'aimerais pouvoir lancer une requête, puis dire exactement combien de données ont été renvoyées sur le réseau et utiliser cela pour m'aider à optimiser.

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

Des conseils?

Était-ce utile?

La solution

On dirait que vous pouvez récupérer le SqlConnection de votre DataContext et activer les statistiques.

L’une des statistiques est "Octets renvoyés".

Lien de référence MSDN

Autres conseils

Remarque: vous devez convertir la connexion en SqlConnection si vous avez un DataContext existant

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

récupérez ensuite les statistiques avec:

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

Je n'ai trouvé aucun moyen de récupérer le SqlConnection du DataContext. J'ai donc 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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top