บทความนี้สาธิตการพัฒนาระบบเว็บแอพพลิเคชั่น Contoso University ซึ่งผมได้ศึกษาจากเว็บไซท์ http://asp.net/
หากต้องการอ่านบทความต้นฉบับจะอยู่ที่
ผมได้ศึกษา และทดลองทำตามแล้วนำมาเล่าให้ท่านอ่านกันอีกครั้ง อรรถรสอาจมาก น้อยไปกราบขออภัยมา ณ โอกาสนี้ด้วยครับ
สำหรับตอนแรกนี้ เป็นการกล่าวเรื่องทั่วไปของระบบที่เราจะได้ทดลองทำกัน
จุดประสงค์
พัฒนาระบบเว็บแอพพลิเคชั่น เพื่อสนับสนุนการบริหารจัดการมหาวิทยาลัย Contoso
ผู้ใช้ระบบสามารถจัดการกับข้อมูลนักเรียน วิชา ผู้สอน ได้
แสดงภาพตัวอย่างดังนี้ครับ
สิ่งที่ต้องเตรียม
1.
Microsoft Visual Studio Express 2010 หรือเป็นรุ่นที่สูงกว่านี้ ต้องการคลิกที่นี่
2.
ระบบจัดการฐานข้อมูล Microsoft SQL Server 2008 Express หรือรุ่นที่สูงกว่า
3. ให้ดาวโหลดตัวอย่างระบบฐานข้อมูลจากที่นี่ ส่วนวิธีการติดตั้งขอให้อ่านจากเว็บที่ให้ดาวน์โหลดเอาเอง
4. บทความนี้ใช้ภาษา C# และ LINQ ในการพัฒนา
วัตถุุประสงค์
เราจะสร้าง Webapp และสร้าง Emtity DataModel จากฐานข้อมูลที่มี
ดำเนินการ
1.เมื่อได้สร้างฐานข้อมูลเสร็จแล้ว ให้สร้าง Web App ขึ้นมา ตั้งชื่อว่า ContosoUniversity
2.ที่ Solution Explorer ทางขวาให้เปิด Site.Master ขึ้นมาแก้ไขชื่อเว็บ
เปิด Site.Master ที่ไฮไลท์ไว้
แล้วเปลี่ยนข้อความที่ด้านบนจาก
3. แก้ไขแท้ก <asp:Menu.. ด้วยการก้อบโค้ดนี้ลงไปแทนที่เดิม
4. แก้ไข default.aspx ด้วยการเพิ่มข้อความ Welcome to Contoso… ดังนี้
5. กำหนดค่าการติดต่อกับฐานข้อมูล โดยการเปิด Server Explorer คลิกที่ไอคอน แล้วติดต่อกับฐานข้อมูลที่ได้สร้างเอาไว้แล้ว เมื่อการเชื่อมต่อกับฐานข้อมูลเสร็จแล้วจะได้ผลดังนี้
6. จากนั้นเราจะสร้าง Entity Data Model ด้วยการสร้างโฟลเดอร์ขึ้นมาตั้งชื่อว่า DAL แล้วคลิกขวาเลือก Add //New Item
ตั้งชื่อโมเดลว่า SchoolModel แล้วคลิกปุ่ม Add
หากปรากฏหน้าต่างนี้ให้เลือก No
ให้คลิก Generate from database แล้วคลิก Next
หน้าการเชื่อมต่อข้อมูลให้เลือก School ตัวเลือกด้านล่างให้เลือกตามนี้ และคลิก Next
ที่หน้า database object ให้เลือกตารางทุกอันยกเว้น sysdiagram และตัวเลือกอื่นๆตามนี้ แล้วคลิก Finish
เมื่อการสร้าง Data model เสร็จแล้วจะปรากฏดังนี้
7.อธิบาย Data Model
จากเอกสารต้นฉบับ มีการอธิบายองค์ประกอบของความสัมพันธ์ของ EDM เอาไว้โดยสรุปดังนี้
อธิบาย คสพ แบบ 1 ต่อ 0 หรือ 1
Entity person จะมี คสพ กับ Entity OfficeAssignment กันแบบ 1 : 0..1
หมายถึงบุคคลใดๆ ในระบบอาจจะไม่มี หรือมีอย่างมากเพียง 1 ชุดข้อมูลทีเกี่ยวข้องกับห้องทำงาน
สำหรับระบบนี้ออกแบบให้อาจารย์ผู้สอนแต่ละคนหรือบางคนมีห้องทำงานเป็นของตนเอง
อธิบาย คสพ แบบ 1 ต่อ หลากหลาย
Entity StudentGrade จะมี คสพ กับ Person แบบ 1 ต่อ *
หมายถึงบุคคลในระบบสามารถมีเกรดหรือผลการศึกษา ได้หลายตัว เพราะเรียนหลายวิชา ซึ่งในระบบนี้ออกแบบให้นักเรียนเท่านั้นที่มีผลการศึกษา
อธิบาย คสพ แบบ หลาก ต่อ หลากหลาย
สำหรับ คสพ แบบนี้ อาจดูสับสนสักหน่อย พูดให้ง่ายขึ้นคือ ผู้สอนสอนได้หลายวิชา และแต่ละวิชาก็สามารถสอนได้โดยผู้สอนหลายๆคน สำหรับระบบนี้ได้ระบุว่าเฉพาะผู้สอนเท่านั้นที่มี คสพ กับรายวิชา
อธิบาย Navigation Properties
ที่แต่ละ Entities จะมี Navigation เพื่อชี้ไปยัง Entity อื่นๆที่มีความเกี่ยวข้องกับ Entity นั้นๆ
ดังภาพนี้ เห็นได้ว่า Entity Person มีการเชื่อมโยงไปหา CourseGrade, OfficeAssignment, Course.. เป็นต้น
นอกจากนี้ คสพ แบบหลากหลาย ต่อ หลากหลาย จะไม่มีการสร้าง Entity ขึ้นแบบใช้ Key ร่วมกันแบบในฐานข้อมูล แต่ใช้ Navigation Properties ระบุ คสพ ลงไป
8.อธิบายการแก้ไขชื่อใน Entity
เราสามารถแก้ไข Field ใน Entity ได้ ในตย นี้จะเปลี่ยนชื่อ Person.FirstName ให้เป็น FirstMidName ด้วยการคลิกขวาที่ FirstName แล้วเลือก Rename
แล้วป้อน FirstMidName ลงไป จะได้ผลดังนี้
9.อธิบายการใช้ Model Browser
Model Browser เป็นเครื่องมือที่ใช้เข้าถึงโครงสร้างข้อมูล
หากแถบเครื่องมือของเราไม่มี Model Browser ปรากฏขึ้นมา ให้คลิกขวาภายใน EDM แล้วเลือก Model Browser
ที่แถบเครื่องมือทางขวา จะปรากฏ Model Browser ขึ้นมา
ภายใน จะมี
- School Model ซึ่งใช้แสดงโครงสร้างของDataModel
- SchoolModel.Store ใช้แสดงโครงสร้างของฐานข้อมูล
ลองคลิกที่ SchoolModel เลือก Entity Type เลือก person แล้วคลิกขวาที่ FirstMidName เลือก Table Mapping
จะเห็นการเชื่อมโยงกันระหว่าง Entity Data Model กับ Database ถึงแม้ชื่อฟิลด์ใน EDM จะเปลี่ยนเป็น FirstMidName แล้ว แต่ใน Database ก็ยังคงเป็น FirstName เช่นเดิม
ส่วนรายละเอียดภายใน EDM ที่จริงเป็น XML ทั้งหมดเราสามารถแกะดูได้ โดยคลิกขวาที่ SchoolModel.edmx แล้วเลือก XML Text Editor จะได้ผลแบบนี้
สำหรับบทที่ 1 ขอจบเพียงเท่านี้ครับ