<Table Adapter> พื้นฐานของ Table Adapter
ก่อนหน้านี้เมื่อผมพัฒนาโปรแกรมด้วย .Net Framework 2.0 ผมมักจะใช้ SQLDataSource ในการติดต่อ SQL Server เป็นส่วนใหญ่ หรือไม่ก็ใช้ Untyped Dataset บ้างตามโอกาสครับ จนมาวันหนึ่งได้อ่านบทความของคุณ banpote_tt ที่ //www.greatfriends.biz ได้แนะนำเรื่องการใช้งาน ObjectDataSource ผมก็เริ่มสนใจกับ ObjectDataSource มากขึ้น เพราะเดิมผมมีความคิดจะลองเปลี่ยนจาก SQLDataSource มาลองใช้ O/R Mapping ดู หรือไม่ก็เขียน DAO Class และใช้ ObjectDataSource ร่วมกัน เพราะว่าการใช้ SQLDataSource ก็มีข้อดีตรงใช้ง่าย และลดการเขียนโค้ดไปได้มากเมื่อนำมาใช้ร่วมกับ Gridview ครับ แต่ข้อเสียคือ SQLDataSource มันจะติดต่อกับ SQLServer โดยตรง (ไม่ว่าจะใช้คำสั่ง SQL หรือ stored procedure ก็ตาม) ทีนี้พอมี requirement ที่เราต้องพัฒนาระบบแบบ 3-tier หรือ n-tier เราก็ไม่ควรใช้ SQLDataSource อีกต่อไป ดังนั้นก็เลยมองตัวเลือกไปที่ O/R Mapping กับ ObjectDataSource อย่างที่บอกครับ
ทีนี้ในบทความดังกล่าว คุณ banpote_tt ได้ใช้ Typed Dataset (และแน่นอนครับ Table Adapter) ร่วมกับ ObjectDataSource ผมเลยตัดสินใจที่จะลอง ObjectDataSource และเริ่มสนใจ Table Adapter ด้วย เพราะคิดว่าการที่เราใช้ Typed Dataset + Table Adapter มันน่าจะดีกว่าเรามาเขียน Class เอง เพราะตัว Typed Dataset และ Table Adapter มันก็เป็น Class อยู่แล้ว และที่สำคัญ VS มันมี wizard สร้างให้เราอัตโนมัติ มันช่วยลดงานเราได้พอสมควร ที่สำคัญผมคิดเองว่าถ้า Typed Dataset ที่สร้างขึ้นมันยังไม่สมบูรณ์ ผมก็สามารถไปสร้าง Class เพิ่มเพื่อใช้งานร่วมกันก็ได้ (เช่นไปสร้าง Classs ใน Business Logic Layer เพิ่ม) หรือถ้าเป็นไปได้ก็อาจจะทำการ Inherit Typed Dataset มาสร้าง Class ใหม่ก็เป็นไปได้ (วันหลังผมพบว่า Typed Dataset จริงๆแล้วมันเป็น Partial Class ดังนั้นเราก็ใช้ความสามารถของ Partial Class ได้ครับ อันนี้ไว้เขียนเป็นบทความทีหลัง)
ทีนี้มาลองดูตัวอย่างหน้าตาของ Typed DataSet และ Table Adapter กันครับ เริ่มจากดูที่ DataSet Designer ก่อน

สำหรับ Table Adpater นั้นเป็นความสามารถใหม่ที่มาพร้อมกับ Visual Studio 2005 (ไม่ใช่ ADO.Net 2.0 หรือ .Net Framework 2.0 นะครับ) เพราะโดยทางเทคนิคแล้ว Table Adapter ไม่ใช่เทคโนโลยีของ ADO.Net 2.0 แต่ว่าเป็น class ที่ถูกสร้างขึ้นอัตโนมัติโดย Visual Studio 2005 โดยเป็นส่วนหนึ่งของ Typed Dataset ตัว TableAdapter จะมีหน้าที่เหมือน DataAdapter (เช่น SQLDataAdapter) คือทำการซิงโครไนซ์ข้อมูลใน Dataset (DataTable) กับ DataSource ด้วย FillMethod (เหมือน DataAdapter) หรือ GetMethod ก็ได้
จากรูปด้านบนเมื่อเราสั่ง Preview Code จะเห็นว่า Typed DataSet และ Table Adapter จะถูกเก็บในรูปแบบของ XML มีนามสกุลเป็น xsd ครับ

เมื่อเรา run application แล้วVisual Studio จะทำการแปลงไฟล์ xsd นี้ให้เป็น Classes (แปลว่ามีหลาย class ครับ คือ 1 Table Adapter นั้นคือ 1 class และส่วนอื่นๆของ Dataset ก็เป็น Class ด้วย เช่น DataTable Class, DataRow Class) ดังนั้นเราจึงสามารถสร้าง object จาก class เหล่านี้มาใช้งานได้ เราก็เลยใช้ ObjectDataSource ได้ไปในตัว ซึ่งการใช้ ObjectDataSource ก็มีข้อดีหลายข้อ ถึงไม่เท่ากับการใช้ SQLDataSource แต่ก็ดีกว่ามาทำ Databinding ระหว่าง Gridview กับ datasource (เช่น DataSet, IList, etc.) เอง
ลองดูตัวอย่าง auto-gen file ที่สร้างจาก xsd นะครับ สำหรับรายละเอียดของไฟล์นี้ไว้เรามาดูกันในบทความต่อไป

จะสังเกตุเห็นว่าการใช้ Table Adapter จะดีกว่าการใช้ DataAdater ครับ เพราะ DataAdapter 1 ตัว จะสามารถบรรจุ DbCommand ได้แค่ 4 ตัว คือ Select, Insert, Update, Delete ถ้าคุณมีคำสั่ง Insert Command หลายแบบ คุณก็ต้องมาเขียนโค้ดเพื่อเปลี่ยน Command ก่อนที่จะสั่ง execute command นั้นๆ ไม่เหมือน Table Adapter ที่คุณสามารถสร้าง Command ได้หลายตัว เวลาเรียกใช้ก็แค่ระบุชื่อให้ถูกแค่นี้เอง ดังนั้นโปรเจคที่ใหญ่ขึ้น คุณสามารถแยกส่วนงานที่เป็น Data Access Layer ออกมากได้ง่ายขึ้นครับ นอกจากนี้อย่างที่บอกว่า Table Adapter มันเป็น Public Partial Class ดังนั้นคุณสามารถ extend ความสามารถของ Class ของคุณได้ตามตัองการ
ส่วนวิธีการสร้าง TableAdapter และใช้งาน ObjectDataSource ลองศึกษาจากบทความคุณ banpote_tt ที่ www.greatfriends.biz ครับ
บทความ - ASP.NET ObjectDataSource Control //greatfriends.biz?36893
พอดีมีอีกบทความของคุณ nano ที่ greatfriends เหมือนกันครับ เกี่ยวกับเรื่องการใช้ TableAdapter และ ObjectDataSource เพื่อทำ Codeless Programming พอดี
บทความ ทำงานกับข้อมูลแบบง่ายไม่มี Code ด้วย ASP.Net //greatfriends.biz?62274
Create Date : 04 ตุลาคม 2550 |
Last Update : 9 ตุลาคม 2550 17:33:35 น. |
|
3 comments
|
Counter : 2184 Pageviews. |
 |
|
|
โดย: jio IP: 58.8.152.22 วันที่: 24 ตุลาคม 2550 เวลา:1:25:54 น. |
|
|
|
โดย: Pookpui IP: 203.158.118.14 วันที่: 24 มีนาคม 2551 เวลา:20:40:19 น. |
|
|
|
โดย: ริวซากิ IP: 117.47.224.170 วันที่: 18 พฤษภาคม 2552 เวลา:18:07:17 น. |
|
|
|
|
|
|
|
|
| 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 | |
|
|
|
|
|
|
|
|
|
xsad
xsdasfd