كيفية تحديد الحجم بالبايت من مجموعة نتائج من LINQ إلى SQL

عند كتابة دليل SQL من السهل جدا لتقدير حجم وشكل البيانات التي يرجعها الاستعلام. أنا على نحو متزايد تجد صعوبة في القيام بذلك مع LINQ لاستعلامات SQL. أحيانًا أجد طريقًا أكثر من البيانات التي كنت أتوقعها - والتي يمكن أن تؤدي إلى إبطاء عميل بعيد للوصول إلى قاعدة بيانات مباشرة.

أريد أن أكون قادرًا على تشغيل طلب بحث ، ثم أخبرنا بدقة كمية البيانات التي تم عرضها عبر السلك ، واستخدم هذا لمساعدتي في التحسين.

لقد ربط بالفعل سجل باستخدام طريقة DataContext.Log ، ولكن هذا يعطيني فقط إشارة من SQL المرسلة ، وليس البيانات الواردة.

أي نصائح؟

0
وأضاف
الآراء: 1

3 إجابة

ملاحظة: أنت بحاجة إلى إرسال الاتصال إلى SqlConnection إذا كان لديك DataContext موجود

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

ثم استرجع الإحصاءات مع:

 ((SqlConnection)dc.Connection).RetrieveStatistics()
0
وأضاف

يبدو أنه يمكنك الحصول على SqlConnection الخاص بـ DataContext وتشغيل الإحصائيات.

أحد الإحصائيات هو "البايتات المرتجعة".

رابط مرجع MSDN

0
وأضاف

لم أجد أي طريقة للاستيلاء على SqlConnection من DataContext ، لذلك قمت بإنشاء SqlConnection يدوياً:

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();
0
وأضاف