การใช้โพรซีเดอร์ที่จัดเก็บเป็นวิธีหนึ่งและใช้กันอย่างแพร่หลายมานานหลายปี
วิธีที่ทันสมัยกว่าในการโต้ตอบกับฐานข้อมูล SQL Server จาก C # (หรือภาษา. NET ใด ๆ ) คือการใช้ Entity Framework ข้อดีของ Entity Framework ก็คือมันให้ระดับที่สูงกว่าของนามธรรม
อ้างจาก Microsoft ( https://msdn.microsoft.com/en-us/data/jj590134 ):
ADO.NET Entity Framework ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันการเข้าถึงข้อมูลโดยการเขียนโปรแกรมกับโมเดลแอปพลิเคชันเชิงแนวคิดแทนการเขียนโปรแกรมโดยตรงกับสคีมาหน่วยเก็บข้อมูลเชิงสัมพันธ์ เป้าหมายคือการลดจำนวนรหัสและการบำรุงรักษาที่จำเป็นสำหรับแอปพลิเคชันที่เน้นข้อมูล แอปพลิเคชัน Entity Framework ให้ประโยชน์ดังต่อไปนี้:
- แอปพลิเคชันสามารถทำงานในรูปแบบของแนวคิดรวบยอดแอปพลิเคชันเป็นศูนย์กลางมากขึ้นรวมถึงประเภทที่มีการสืบทอดสมาชิกที่ซับซ้อนและความสัมพันธ์
- แอปพลิเคชันนั้นเป็นอิสระจากการพึ่งพาฮาร์ดโค้ดในเอ็นจินข้อมูลหรือสกีมาหน่วยเก็บข้อมูลเฉพาะ
- การแม็พระหว่างโมเดลแนวคิดและสกีมาเฉพาะหน่วยเก็บข้อมูลสามารถเปลี่ยนแปลงได้โดยไม่ต้องเปลี่ยนโค้ดแอ็พพลิเคชัน
- นักพัฒนาสามารถทำงานกับโมเดลวัตถุของแอปพลิเคชันที่สอดคล้องกันซึ่งสามารถแมปเข้ากับสคีมาหน่วยเก็บข้อมูลต่างๆซึ่งอาจนำไปใช้ในระบบการจัดการฐานข้อมูลที่แตกต่างกัน
- โมเดลโมเดลเชิงแนวคิดหลายโมเดลสามารถแม็พกับสกีมาหน่วยเก็บข้อมูลเดียว
- ส่วนสนับสนุน Language-integrated query (LINQ) ให้การตรวจสอบความถูกต้องทางไวยากรณ์เวลาคอมไพล์สำหรับแบบสอบถามกับโมเดลแนวคิด
การใช้ ORM กับขั้นตอนการจัดเก็บเกี่ยวข้องกับการแลกเปลี่ยนโดยเฉพาะอย่างยิ่งในแง่ของการรักษาความปลอดภัยและที่ตั้งของตรรกะ
แนวทาง "คลาสสิค" เพื่อการพัฒนากับ SQL Server คือการให้ตรรกะของแอปพลิเคชันอยู่ในขั้นตอนการจัดเก็บและโปรแกรมที่ให้สิทธิ์ด้านความปลอดภัยในการดำเนินการขั้นตอนการจัดเก็บเท่านั้นไม่ใช่การอัพเดทตารางโดยตรง แนวคิดในที่นี้คือกระบวนงานที่เก็บไว้เป็นเลเยอร์ตรรกะทางธุรกิจสำหรับแอปพลิเคชัน ในขณะที่ทฤษฎีเสียงมันมีแนวโน้มที่จะหลุดพ้นจากความโปรดปรานด้วยเหตุผลต่าง ๆ ถูกแทนที่ด้วยการใช้ตรรกะทางธุรกิจในการเขียนโปรแกรมภาษาเช่น C # หรือ VB แอปพลิเคชันที่ดียังคงใช้งานด้วยวิธีการที่ทำเป็นชั้นรวมถึงการแยกข้อกังวล ฯลฯ แต่มีแนวโน้มที่จะทำตามรูปแบบเช่น MVC
ข้อเสียของการใช้ตรรกะใน ORM มากกว่าฐานข้อมูลคือความง่ายในการดีบักและทดสอบกฎความสมบูรณ์ของข้อมูลโดยผู้รับผิดชอบฐานข้อมูล (DA หรือ DBA) ยกตัวอย่างคลาสสิกของการโอนเงินจากการตรวจสอบของคุณไปยังบัญชีเงินฝากออมทรัพย์มันเป็นสิ่งสำคัญที่จะทำเช่นนี้เป็นหน่วยงานของอะตอมในคำอื่น ๆ แซนวิชในการทำธุรกรรม หากการถ่ายโอนประเภทนี้ได้รับอนุญาตให้ทำผ่านขั้นตอนการจัดเก็บเป็นเรื่องง่ายสำหรับ DA และผู้ตรวจสอบไปยัง QA ถึงขั้นตอนการจัดเก็บ
หากในอีกทางหนึ่งจะทำผ่าน ORM เช่น Entity Framework และในการผลิตพบว่าในบางครั้งเงินถูกนำมาจากการตรวจสอบ แต่ไม่ได้นำไปสู่การดีบักการออมอาจจะซับซ้อนมากขึ้นโดยเฉพาะอย่างยิ่งหากมีหลายโปรแกรมที่เกี่ยวข้อง นี่อาจเป็นกรณีที่เป็นไปได้มากที่สุดซึ่งอาจเกี่ยวข้องกับปัญหาฮาร์ดแวร์แปลก ๆ ที่ต้องเกิดขึ้นในลำดับเฉพาะ ฯลฯ การทดสอบนี้ทำได้อย่างไร?