โน๊ต ทำความเข้าใจกับ layer ของ ADO.NET
สวัสดีทุกคนครับ วันนี้ผมจะขอมาเขียนอะไรที่ผมได้ไปรู้มาเก็บไว้สักหน่อย
พอดีว่า ช่วงนี้ทำงานกับ database หลายเจ้าครับ (ที่ไม่ใช่ MSSQL)
ทำให้ได้ไปเจอปัญหาต่างๆนาๆ เกี่ยวกับการเชื่อมต่อ ของ ADO.NET ครับ
คือ ผมพยายามจะ Generate Model Database โดยใช้ EntityFramrwork
แต่ก็ไม่สามารถหาตัว .NET Provider ของแต่ละเจ้าได้สักที
จึงเกิดความสงสัยว่า ทำไม Database เจ้าอื่น
เขาไม่ทำตัว .NET Provider แบบที่ใช้งานได้จริงๆสักที
(จริงๆ มันอาจจะเคยใช้ได้ดีในยุคก่อนๆครับ เท่าที่เห็นมา VS2008 VS2010 บ้างไรบ้าง)
เลยได้ไปหาความหมายของ ADO.NET เนี่ย มันคือไรกันนะ
มันเป็นเทคโนโลยีเก่าที่ไม่มีคนสนใจแล้วจริงๆหรือเปล่า
สรุปเท่าที่ทราบมาก็คือ
ไอ้เจ้า ADO.NET เนี่ย มันเกิดมานมนานละ
เริ่มต้นมันเกิดมาพร้อมกับชื่อ ActiveX Data Object
โห แค่เห็น ActiveX ก็นึกถึง Windows98 ละครับ
แต่นั้นแค่ชื่อครับ แต่ข้างในมันก็ Update ไปเยอะแล้วครับ
อื้ม ก็พอเข้าใจละว่าทำไม มันถึงยากเย็นขนาดนั้น
(จริงๆ อาจจะมีวีธีอื่นที่ผมไม่ทราบนะ แต่เท่าที่ผมหาข้อมูลมา การทำ DatabaseFirst โดยใช้ ADO Model เนี่ย หาข้อมูลได้แต่เว็บเก่าๆ 2000 2007 อะไรทำนองนั้น)
ทีนี้จะขอ Note ในส่วน Layer ใหม่นะครับ
ตัว ADO เนี่ย เป็น Provider ของ .NET Framework ครับ
มันจะช่วยให้เราจัดการ Database, Dataset ทั้ง Offline, Online ได้ง่ายขึ้น
โดยที่เราไม่ต้องไปเขียน Query Command เอง
พอ ADO ได้ข้อมูลมา ก็จะเอาไป Map กับ Entity Framework
เพื่อให้เราเอาไปทำงานต่อไป
ตอนแรกเข้าใจว่า Entity Framework ลงไปคุยกับ Database
แต่จริงๆ มันทำหน้าที่เป็นแค่ ORM (Object Relational Mapping)
เวลาเราเขียนเราก็จะเขียนโดยใช้ LINQ ข่วย
นี้จึงเป็นสาเหตุที่ Install Entity Framework แล้ว
แต่ตัว .NET Provider มันไม่ขึ้น
ทั้งหมดที่พูดมา จะไม่มีปัญหาเลย ถ้าเราไปเขียน Code First ถถถ
แต่เพราะความดื้อด้านอยากได้ ADO.NET Model นิแหละ มันเลยเกิดปัญหา
ทั้งหมดนี้ขอบันทึกเอาไว้เผื่อเป็นการอธิบายตัวเอง และ อาจจะได้ใช้ในโอกาสถัดไปสำหรับอธิบายคนอื่น
หากผมเข้าใจอะไรผิดพลาดไป โปรดชี้แนะด้วยครับ
อาจมีบางอย่างที่ผมเข้าใจไม่หมด หรือ เขียนออกมาไม่เข้าใจ
ขอบคุณที่สละเวลาเข้ามาอ่านครับ
:D
11:58 AM 11/4/2020
ความคิดเห็น
แสดงความคิดเห็น