โครงการหนังสือ ASP.NET 2.0 ฟรีสำหรับโรงเรียน
แจกไปหมดแล้ว 15 เล่มครับ
งานสัมนาดีของ Developer มาแล้วครับ งานนี้มีเรื่อง Visual Studio เป็นหลัก และเสริมด้วยการพัฒนาแอพพลิเคชั่นบน Windows Phone 7 และ Windows 8 เห็นก่อนใครครับ
ดูรายละเอียด และลงทะเบียนจากลิงค์นี้ครับ http://www.thaivmadmin.com/index.php/News/อยากเห็น-Windows-8-ก่อนใคร-ต้องมางาน-Microsoft-TechDays-Thailand-2012.html
Event ดีที่ยำใหญ่หลายหัวข้อครับ วันอาทิตย์ที่ 15 มกราคม 2012 นี้แล้วครับ อาจจะโพสต์ช้าไปหน่อย ใครสนใจดูได้ที่นี่ครับ http://www.facebook.com/events/317882901567092/
พอดีผมมีงานที่ต้องพัฒนา Silverlight ผมไมใครรู้เรื่องนี้เลย อาศัยศึกษาเอง เลยผมตกลงเลือกใช้ Silverlight 4 กับ WCF RIA SERVICE ปัญหาที่ตามมาใน คือไม่เข้าใจเรื่อง Entity Framework พอเข้าใจว่ามัน Gen จาก Database แล้วมีความสัมพันธ์ของแต่ละ Table ออกมาให้ด้วย ในส่วน WCF RIA SERVICE ผมพอเข้าใจว่าเป็นส่วนที่ทำให้จัดการ Middle Tier ได้ดียิ่งขึ้นเหมือนเป็นส่วน Bll ผมสามารถเขียน Query เพื่มเติม รวมถึงสร้าง Class เพิ่มเติมที่มี Query มาจาก Class ที่ Gen มา Entity Framework โดยใช้ Linq รวมถึงตรวจสอบข้อมูลได้ ซึ่งตอนนี้ผมคิดว่าคงต้องไปเริ่มศึกษาตั้งแต่ Linq เพราะงานไม่เดินแน่ครับ ตอนนี้เลยเริ่มศึกษาอยู่ครับ เลยสังสัยขึ้นมา Linq กับ Entity Framework มันต่างกันยังไงเหรอครับ
ที่ผมเห็นจากความคิดของผม คือใน Entity Framework มันจะมีแสดงความสัมพันธ์ association ให้ด้วย
โทษทีครับแบบนี้ไม่งงมากกว่าครับ Linq to Sql Class มันต่างกับ EF ยังไงเหรอครับ พอดีเห็นมัน Gen Class จาก Database ได้เหมือนกันอ่านตามเว็บต่างประเทศ บอก Linq to Sql Class เหมาะสำหรับงานขนาดเล็ก ส่วน EF สำหรับงานขนาดใหญ่ Linq only supports 1 to 1 mapping of database tables ตรงนี้หมายถึงยังไงเหรอครับ
EF Mapping an Entity to Multiple Tables หมายถึง EF มันสามารถ inheritance.จาก Class ที่ Gen จาก EF นำ Field ในหลาย Table มารวมเป็น Class ใหม่ได้ใช่หรือเปล่าครับ ขอบคุณครับ
อืม ผมก็ยังไม่ได้มีโอกาสใช้ตัว EF เลยนะครับ แต่เห็นว่าต้นปีเค้าจะมีจัดสัมนาเรื่องนี้ฟรีโดย Greatfriends ครับ
เท่าที่ผมเข้าใจนั้น Linq To SQL เค้าทำมาสำหรับฐานข้อมูล SQL Server โดยเฉพาะทำให้คลาสที่เค้า gen ออกมานั้นผูกเข้ากับ SQL Server อย่างแน่นหนา ในขณะที่ Entity Data Model (EDM) ของ EF นั้นจะยืดหยุ่นกว่ามากทั้งในเรื่องของการออกแบบคลาส (Entity) ได้เอง และใช้กับฐานข้อมูลตัวอื่นที่ไม่ใช่ SQL Server ได้ด้วย
สำหรับงานขนาดเล็กที่ใช้ SQL Server เป็นฐานข้อมูลแน่ๆ แนะนำว่าใช้ Linq To SQL จะเร็วกว่า สะดวกและง่ายกว่าอย่างที่เค้าว่า เราไม่ต้องไปปรับจูนอะไรมันเลย แค่ลากตาราง view หรือ stored procedure เข้ามาในส่วนออกแบบ ก็ได้ Data Layer ไว้ใช้งานจาก BLL แล้วครับ
แต่สำหรับงานขนาดใหญ่ มีความซับซ้อนของข้อมูล (Entity) มาก และมีความต้องการที่จะดึงข้อมูลจากฐานข้อมูลหลายๆ ตัวเพื่อใช้สร้าง Entity ก็แนะนำ EF ครับ แต่ถ้าเลือกตัวนี้ต้องยอมรับว่าเราจะมีงานเพิ่มครับ คือไอเดียของ EF นั้น เค้าจะแยกออกเป็นสามส่วนอยู่ในตัวมัน ตัวแรกใช้บอกว่าในโลกของ .NET ที่เป็นคลาสนั้นจะประกอบด้วย property หรือ field ย่อยอะไรบ้าง และมีความสัมพันธ์กันอย่างไร ส่วนนี้บางทีเรียกว่า (Object Domain) ตัวอย่างเช่น คลาสลูกหลายๆ ตัวอาจจะ inherit มาจากคลาสแม่ตัวเดียวกัน หรือคลาสแม่ก็อาจจะมีคลาสย่อยๆ หลายตัวเป็นตัวลูกอีกทีก็ได้ ส่วนที่สองจะเป็น schema ที่บอกว่าฝั่ง database นั้นมีตารางอะไร field อะไรที่เราใช้ได้บ้าง ส่วนนี้บางทีเรียกว่า Database Domain และส่วนที่สามจะเป็นส่วน mapping ที่ใช้ผูกความสัมพันธ์ระหว่าง Object Domain กับ Database Domain ครับ ซึ่งค่อนข้างใช้เวลาในการจัดการกับเจ้าสามส่วนนี้พอสมควรเลยครับ แต่ถ้าทำเสร็จแล้วก็จะได้ภาพของ Entity ที่ชัดเจนเหมาะกับงานที่ใช้ข้อมูลที่ซับซ้อนได้เป็นอย่างดีครับ และถ้าหากต่อมามีการเปลี่ยนแปลงฐานข้อมูลไปใช้ชนิดอื่น เช่น Oracle เราก็ไม่ต้องไปแก้ไขส่วนแรกใหม่ที่เป็น Object Domain ใหม่ทำให้โค้ดที่เราเขียนทั้งหมดใน .NET ไม่ถูกกระเทือนเลยครับ จะมีแต่งานในส่วนที่สอง และสามแทนครับ
ขอบคุณ คุณ Nas มากๆครับที่อธิบายให้ครับ เดี๋ยวผมจะได้เริ่มต้นศึกษาจาก Linq to sql ไปก่อนครับ