الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ADO.NET 2.0

مغلق
بدأه AhmedElbaz في 29 ديسمبر 2006 · 6 رد · 1,107 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

و كل عام و انتم بخير

ADO.NET 2.0 Dataset,DataTable

DataSet هي تمثيل منفصل الاتصال للبيانات في الذاكره تدعم البرمجه العلائقيه بغض النظر عن مصدر البيانات

الجديد في DataSet , DataTable

1 زياده الاداء و السرعه مقارنه بالاصدار السابق خصوصا في حاله كبر حجم البيانات

2 تعزيز ال Serialization

اولا ال Serialization هو عمليه تحويل كائن في الذاكره الي سلسله من ال Bytes و لذلك لتخزينها علي الديسك

او ارسالها الي برنامج اخرRemoting

و ال Deserialization العكس

في الاصدار السابق

كانت ال DataSet تدعم ال Serialization و لكن ال DataTable لم يدعمها

و لعمل Serialization ل dataTable يجب وضعه فيه DataSet اولا

و كان ال dataSet تدعم XML Serialization فقط اي تحويل محتوياتها الي XML و العكس

و ذلك عن طريق داله Load و Save

حاليا في ADO.NET 2.0

اصبح ال DataTable اكثر استقلالا من السابق فيمكنه عمل Serialization

تم اضافه امكانيه عمل Binary Serialization اي تحويل البيانات الي Binary

و هذا يقلل حجم البيانات مقارنه بال XML التي تزيد من حجم البيانات

وذلك عن طريق الخاصيه الجديده RemotingFormat التي تحدد نوع ال Serialization

BinaryFormatter binaryFormatter = new BinaryFormatter();

FileStream fileStream = new FileStream("c:\\serialization.bin", FileMode.CreateNew);

DataSet DS = GetDatat(); //return any data. 

DS .RemotingFormat = SerializationFormat.Binary; 

binaryFormatter.Serialize(fileStream,DS );

fileStream.Close();

لاحظ استخدام SerializationFormat Enumeration

يمكنك استخدام SerializationFormat.XML مع ال XML

3 امكانيه مفيده جدا

تحويل DataReader الي DataTable او DataSet و العكس

يحتوي ال DataTable و DataSet علي داله Load التي يمكن استخدامها لتحميل DataReader

string connectionString ="SomeConnection"; 
SqlConnection Conn = new SqlConnection(connectionString); 
Conn.Open(); 

SqlCommand Cmd = new SqlCommand("Select Query", Conn ); 

SqlDataReader Reader = Cmd.ExecuteReader(CommandBehavior.CloseConnection);

DataTable dataTable = new DataTable("tab"); 

dataTable.Load(Reader);

التحويل الي DataReader باستخدام الداله GetDataReader الموجوده في ال DataTable و DataSet

و في حاله وجود اكثر من جدول داخل ال DataSet يتم مليء ال DataReader باكثر من ResultSet

للحديث بقيه ان شاء الله

#2

شكراً لك أخي للمعلومات القيمه

Success Is A Journey Not A Destination

#3

بارك الله فيك اخوي

اتمنى ماتحرمنا من ابداعاتك

1145392391.gif
#4

شكرا لكم

و باذن الله سأحاول الاستمرار

#5

Data Paging

يمكنك الان عمل paging للسجلات عن طريق الداله الجديده ExecutePageReader الموجوده بال DBCommand و تعود ب DBdataReader

في السابق كان يتم الاعتماد علي اجراء مخزن في قاعده البيانات لعمل ال paging

راجع Paginating Through a Result Set في منتدي ال SQL Server

مثال علي هذه الامكانيه الجديده

string connectionString ="SomeConnectionString";

SqlConnection Conn = new SqlConnection(connectionString); 

Conn.Open(); 

SqlCommand Cmd = new SqlCommand("Your Query", Conn); 

SqlDataReader Reader = Cmd.ExecutePageReader(CommandBehavior.CloseConnection, 1, 10);

وتستطيع تغير هذه الارقام حسب الحاجه و استخدام زر التالي و السابق للتنقل بين الصفحات

للحديث بقيه ان شاء الله

#6
اقتباس
يمكنك الان عمل paging للسجلات عن طريق الداله الجديده ExecutePageReader الموجوده بال DBCommand و تعود ب DBdataReader

اعتذر عن هذا الخطأ داله ExecutePageReader كانت موجوده في النسخه قبل النهائيه و لكن تم حذفها في النسخه النهائيه

و لكن لما بحثت عن السبب

قالوا ان الطريقه التي بنيت علي اساسها تحطم الاداء لانها تعتمد علي Server Cursor يعني البيانات كلها بترجع من القاعده و بعدين ال Paging بيكون علي البرنامج

كلمه كنت قرأتها عند مذكرتي لل Cursor من فتره وهي

ان كان لديك اي بديل غير استخدام المؤشراتCursors فهو الافضل

اعتذر مره اخري

#7

Batch Updates

في الاصدار السابق من ADO.NET

عند استخدام داله Update الخاصه بال DataAdapter يقوم بتحديث القاعده علي اساس التغيرات التي حدثت في ال DataSet

و في حاله تغير اكثر من Row اي وجود اكثر من تعديل فتقوم الداله باجراء التعديلات واحد واحد مما يقلل من سرعه و كفاءة العمليه Multiple Database Roundtrips

الحل اذا هو تقليل عدد ال Database Roundtrips

عن طريق عمل Update لمجموعه من التغيرات في المره الواحده Batch Updates

ولذلك يوجد في ADO.NET 2.0

خاصيه جديده في ال DataAdapter وهي UpdateBatchSize

تقوم بتحديد عدد ال Rows التي يتم تحديثها في ال database server Roundtrip الواحده

			SqlDataAdapter da = new SqlDataAdapter();
			da.UpdateBatchSize = 5;

هذا الموضوع مغلق.

مواضيع مشابهة