ฉันได้สร้างตัวอย่างหัวข้อการเข้าถึงข้อมูลในพื้นที่เก็บข้อมูลนี้ ฉันมีตัวอย่างและโครงการในหัวข้อต่างๆ เช่น เฟรมเวิร์กเอนทิตี , data first , code first , Orm , การสร้างฐานข้อมูล
เป็นเครื่องมือที่ทำหน้าที่เป็นสะพานเชื่อมระหว่างฐานข้อมูลเชิงสัมพันธ์และการเขียนโปรแกรมเชิงวัตถุ (OOP) บริดจ์นี้เป็นโครงสร้างที่เราใช้โมเดลออบเจ็กต์ของเราเพื่อจัดการข้อมูลของเราในฐานข้อมูลเชิงสัมพันธ์ กล่าวโดยย่อคือเป็นเฟรมเวิร์กที่พัฒนาโดย Microsoft ที่เชื่อมต่อออบเจ็กต์ของเรากับฐานข้อมูลและแลกเปลี่ยนข้อมูลให้เรา
ด้วยการใช้แบบสอบถาม LINQ (Language Integrated Query) กับกรอบงาน Entity เราจึงมีแบบสอบถามที่มีประสิทธิภาพเกี่ยวกับออบเจ็กต์ บริการที่เฟรมเวิร์ก Entity มอบให้ส่วนใหญ่เป็นการติดตามการเปลี่ยนแปลง การแก้ไขข้อมูลประจำตัว และการแปลคิวรี วัตถุประสงค์หลักของเฟรมเวิร์กเอนทิตีคือการช่วยให้นักพัฒนาแอปพลิเคชันมุ่งเน้นไปที่ฝั่งแอปพลิเคชันโดยไม่ต้องยุ่งกับการดำเนินการข้อมูลจนเกินไป ตามตัวอย่างง่ายๆ นักพัฒนาของเรามีหน้าที่รับผิดชอบในการเปิดและปิดการเชื่อมต่อในแอปพลิเคชัน ADO.NET แบบคลาสสิกทั้งหมด อย่างไรก็ตาม เมื่อคุณใช้กรอบงานเอนทิตี คุณจะไม่รบกวนการดำเนินการดังกล่าว คุณเตรียมคำถามของคุณและส่งไปยังฐานข้อมูลผ่านกรอบงานเอนทิตี
Entity Framework ใช้วิธีการพัฒนาโครงการที่แตกต่างกัน 3 วิธีสำหรับสิ่งนี้
Model First = วิธีนี้ช่วยให้สามารถออกแบบฐานข้อมูลบนโมเดลนี้โดยการเพิ่มไฟล์โมเดลเปล่า (.edmx) บน Visual Studio ไฟล์สคริปต์ที่กำหนดในขั้นตอนการคอมไพล์จะสร้างฐานข้อมูล
Database First = ในทิศทางนี้ คลาสที่จำเป็นของเราถูกสร้างขึ้นโดย Entity Framework โดยการเชื่อมต่อฐานข้อมูลที่สร้างไว้ก่อนหน้านี้กับโปรเจ็กต์เป็นแบบจำลอง
ในโฟลเดอร์นี้ ฉันแสดงตัวอย่างฐานข้อมูลก่อน หน้า GitHub
Code First = วิธีนี้เป็นวิธีการที่เราดำเนินการโดยเริ่มสร้างคลาสของเราในสภาพแวดล้อมของ Visual Studio ฐานข้อมูลของเราได้มาจากคลาสเหล่านี้ ที่นี่ นักพัฒนาสามารถดำเนินการแมปได้ ต้องขอบคุณคุณสมบัติในขณะที่สร้างคลาส อย่างไรก็ตาม กระบวนการแมปเป็นเหตุการณ์ที่เรากำหนดข้อจำกัดในตารางของเรา นอกจากคุณลักษณะแล้ว เรายังสามารถดำเนินการเหล่านี้ได้หลายวิธี ตัวอย่างเช่น เครื่องมืออย่าง Fluent Api หรือ Fluent Validation เป็นที่นิยมใช้สำหรับการดำเนินการแมป
การใช้ไลบรารี Entity Framework ทำให้เราสามารถกรองข้อมูลโดยการสืบค้นบนตารางในฐานข้อมูลของเรา การสืบค้นเกือบทั้งหมดที่คุณสามารถทำได้บน T-SQL สามารถทำได้ด้วย Entity Framework
ที่นี่ฉันได้แสดงการดำเนินการเลือกขั้นพื้นฐานแล้ว หน้า GitHub
คุณยังสามารถใช้ฟังก์ชันที่ผสานรวมของการสืบค้น T-SQL และการรายงานกับไลบรารี Entity Framework ได้
ที่นี่ฉันแสดงฟังก์ชันการรวมพื้นฐานของเรา หน้า GitHub
ในโครงสร้าง Code First โครงสร้าง "คลาส" ในภาษาการเขียนโปรแกรมสอดคล้องกับโครงสร้าง "ตาราง" ในฐานข้อมูล และโครงสร้าง "คุณสมบัติ" สอดคล้องกับโครงสร้าง "คอลัมน์" ในฐานข้อมูล นอกจากนี้ ต้องขอบคุณ Attributes การตรวจสอบความถูกต้องสามารถนำไปใช้กับโครงสร้างฐานข้อมูลและเงื่อนไขหรือข้อจำกัดบางอย่างสามารถวางไว้บนคอลัมน์ได้ สิ่งสำคัญที่สุดคือ ช่วยให้คุณรู้สึกถึงการควบคุมโมเดลในโปรเจ็กต์ของคุณโดยอัตโนมัติ และใช้ตามที่คุณต้องการด้วยการควบคุมเต็มรูปแบบ
คุณสามารถดูตัวอย่างของฉันในเรื่องนี้ได้ที่นี่ หน้า GitHub
ฉันได้สร้างฐานข้อมูล vir ที่คุณสามารถใช้ได้ที่นี่
คุณสามารถตรวจสอบได้ที่นี่ หน้า GitHub
เป็นโครงสร้างที่ทำให้โครงการ Layered Architecture ของเราจัดระเบียบมากขึ้น เพิ่มความสามารถในการอ่านโค้ด เพิ่มการทำงานเป็นทีม และทำให้การจัดการข้อผิดพลาดง่ายขึ้น ในความเป็นจริง ด้วยโครงสร้างนี้ เราได้ทำให้การเขียนโครงการเป็นมาตรฐาน เนื่องจากโครงสร้างนี้ประกอบด้วย 3 ชั้นหลัก จึงเรียกได้ว่าเป็นโครงสร้างสถาปัตยกรรมหลายชั้นในปัจจุบัน แต่จริงๆ แล้วมันถูกวางอยู่บน 3 ชั้นหลักๆ ชั้นเหล่านี้ได้แก่
-- ชั้นข้อมูล -- ชั้นธุรกิจ -- ชั้นการนำเสนอ
ที่นี่ฉันสร้างเอนทิตีของฉันที่สอดคล้องกับฐานข้อมูลของฉัน หน้า GitHub
ที่นี่ฉันสร้างเลเยอร์โครงสร้างพื้นฐานของฉัน หน้า GitHub
ฉันสร้าง UI ของฉันที่นี่ หน้า GitHub
Dapper เป็นเครื่องมือ ORM ขนาดเล็กที่พัฒนาโดย Stackoverflow ที่รองรับฐานข้อมูลจำนวนมาก เนื่องจาก orm tools ทำหน้าที่หลายอย่างด้วยตัวเอง จึงทำให้ทำงานช้าเล็กน้อย ไม่เป็นที่ต้องการโดยเฉพาะในพอร์ตที่มีการจราจรหนาแน่น อาจเลือกใช้ Dapper ในกรณีเช่นนี้ มันเป็น "dll" ตัวเดียว ดังนั้นอินเทอร์เฟซสำหรับการทำแผนที่คืออะไร? นอกจากนี้ยังไม่ต้องการไฟล์การกำหนดค่าใดๆ ในระยะสั้นมันง่ายและรวดเร็ว เปิดตัวเป็นโอเพ่นซอร์สบน Github และยังคงมีการพัฒนาอย่างต่อเนื่อง
--คุณลักษณะที่สำคัญที่สุดของ Dapper คือประสิทธิภาพที่ดีมาก โดยส่วนใหญ่แล้วจะเป็นที่ต้องการเนื่องจากข้อได้เปรียบนี้
--คุณสามารถดำเนินการค้นหาของคุณได้อย่างง่ายดายและผูกผลลัพธ์ที่ส่งคืนกับวัตถุได้อย่างง่ายดาย
--ข้อเสียที่สำคัญที่สุดคือเนื่องจากข้อความค้นหาถูกเขียนแบบอินไลน์ จึงค่อนข้างมีแนวโน้มที่จะเกิดข้อผิดพลาด สิ่งนี้ควรได้รับความสนใจ ที่แย่กว่านั้นคือ ข้อผิดพลาดเหล่านี้เกิดขึ้นในรันไทม์ ไม่ใช่ในเวลาบิลด์
--ใน Dapper เราทำเกือบทุกอย่าง นักพัฒนาต้องทำฐานข้อมูล คำสั่งของเรา สินทรัพย์ของเราในด้านโปรแกรม และสถานะของออบเจ็กต์ สิ่งนี้จะเพิ่มต้นทุนการพัฒนาและบำรุงรักษาอย่างมากในระหว่างขั้นตอนการพัฒนาของโครงการขนาดใหญ่
ฉันพยายามใช้ 2 วิธีในที่เก็บนี้ ฉันทำงานกับโพรซีเดอร์ของฉันใน Sql ในพื้นที่เก็บข้อมูลหนึ่ง และในพื้นที่เก็บข้อมูลอื่นของฉันโดยการเขียนคำสั่งลงในโปรแกรมโดยตรง
-- ก่อนอื่น ฉันสร้างฐานข้อมูลใน SQL
-- หลังจากนั้น ฉันได้ปรับขั้นตอนให้เหมาะสมกับวิธีที่ฉันจะใช้ในโปรแกรม คุณสามารถดูได้จากที่นี่ หน้า GitHub
--ในโปรแกรมของฉัน ฉันยังสร้างเลเยอร์และเนื้อหาของฉัน ซึ่งเป็นที่เก็บข้อมูลของฉันที่จะใช้กับขั้นตอนของฉัน สิ่งสำคัญที่นี่คือการให้ขั้นตอนและพารามิเตอร์ที่ฉันจะใช้อย่างถูกต้อง มิฉะนั้นเราจะได้รับข้อผิดพลาดมากมาย คุณสามารถดูได้จากที่นี่ หน้า GitHub
-- ฉันสร้างการเชื่อมต่อกับฐานข้อมูลด้วย "การเชื่อมต่อ" คุณสามารถดูได้จากที่นี่ หน้า GitHub
-- ฉันสร้างอินเทอร์เฟซผู้ใช้ล่าสุดและดำเนินการตามที่ฉันต้องการ คุณสามารถดูได้จากที่นี่ หน้า GitHub
ที่นี่ ฉันเขียนคำสั่งที่จะเรียกใช้การดำเนินการที่ฉันต้องการโดยตรงใน Sql จำเป็นอย่างยิ่งที่จะต้องระมัดระวังอย่างมากในขณะที่เขียนแบบสอบถามที่นี่ ข้อผิดพลาดอาจทำให้เสียเวลามาก สำหรับพารามิเตอร์และค่าที่ตรงกันของพารามิเตอร์ในการสืบค้นจะต้องถูกต้อง แต่สำหรับฉัน ข้อยกเว้นค่อนข้างอธิบายได้ในตัว Dapper การค้นหาข้อผิดพลาดได้ง่ายมีประโยชน์มาก
คุณสามารถดูได้จากที่นี่ หน้า GitHub
ที่นี่ ฉันได้แสดงการกระทำของฉันในส่วนต่อประสานผู้ใช้
คุณสามารถดูได้จากที่นี่ หน้า GitHub