แอปพลิเคชันที่ฉันกำลังสร้างกำลังใช้โพรซีเดอร์ Stored และโมเดลคลาสที่สร้างขึ้นด้วยมือเพื่อแสดงวัตถุฐานข้อมูล บางคนแนะนำให้ใช้ Entity Framework และฉันกำลังพิจารณาเปลี่ยนไปใช้เนื่องจากฉันไม่ได้อยู่ในโครงการ ปัญหาของฉันคือฉันรู้สึกว่าคนที่โต้เถียงกับ EF กำลังบอกฉันถึงสิ่งที่ดีไม่ใช่สิ่งไม่ดี :)
ความกังวลหลักของฉันคือ:
- เราต้องการการตรวจสอบฝั่งไคลเอ็นต์โดยใช้ DataAnnotations และดูเหมือนว่าฉันจะต้องสร้างแบบจำลองฝั่งไคลเอ็นต์ต่อไปดังนั้นฉันไม่แน่ใจว่า EF จะประหยัดเวลาการเข้ารหัสมาก
- เราต้องการให้ชั้นเรียนมีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้เมื่อผ่านเครือข่ายและฉันได้อ่านว่าการใช้ EF มักจะมีข้อมูลเพิ่มเติมที่ไม่จำเป็น
- เรามีเลเยอร์ฐานข้อมูลที่ซับซ้อนซึ่งข้ามหลายฐานข้อมูลและฉันไม่แน่ใจว่า EF สามารถจัดการสิ่งนี้ได้ เรามีฐานข้อมูลทั่วไปหนึ่งฐานที่มีสิ่งต่าง ๆ เช่นผู้ใช้ StatusCodes ประเภท ฯลฯ และหลายอินสแตนซ์ของฐานข้อมูลหลักของเราสำหรับอินสแตนซ์ต่าง ๆ ของแอปพลิเคชัน SELECT SELECT สามารถและจะสืบค้นข้ามทุกอินสแตนซ์ของฐานข้อมูลอย่างไรก็ตามผู้ใช้สามารถแก้ไขวัตถุที่อยู่ในฐานข้อมูลที่ทำงานอยู่ในปัจจุบันเท่านั้น พวกเขาสามารถสลับฐานข้อมูลโดยไม่ต้องโหลดแอปพลิเคชันซ้ำ
- โหมดวัตถุมีความซับซ้อนมากและมักจะมีการเข้าร่วมค่อนข้างน้อย
ข้อโต้แย้งสำหรับ EF คือ:
- เห็นพ้องด้วย ฉันไม่ต้องใช้รหัสในการตรวจสอบเพื่อดูว่าบันทึกได้รับการปรับปรุงก่อนการบันทึกแต่ละครั้งหรือไม่
- การสร้างรหัส EF สามารถสร้างโมเดลคลาสบางส่วนและ POCO ให้ฉันได้ แต่ฉันไม่แน่ใจว่าจะช่วยฉันได้มากเพราะฉันคิดว่าเรายังคงต้องสร้างโมเดลฝั่งไคลเอ็นต์สำหรับการตรวจสอบความถูกต้องและวิธีการแยกวิเคราะห์แบบกำหนดเอง
- ความเร็วในการพัฒนาเนื่องจากเราไม่จำเป็นต้องสร้างขั้นตอนการจัดเก็บ CRUD สำหรับวัตถุฐานข้อมูลทุกตัว
สถาปัตยกรรมปัจจุบันของเราประกอบด้วยบริการ WPF ซึ่งจัดการการเรียกฐานข้อมูลผ่านขั้นตอนการจัดเก็บพารามิเตอร์, วัตถุ POCO ที่ไปที่ / จากบริการ WCF และไคลเอนต์ WPF และไคลเอนต์ WPF เดสก์ท็อปของตัวเองซึ่งเปลี่ยน POCOs เป็นแบบจำลองชั้นเรียน DataBinding
ดังนั้นคำถามของฉันคือ EF เหมาะสมกับสิ่งนี้หรือไม่ มีข้อผิดพลาดใด ๆ เกี่ยวกับ EF ที่ฉันไม่ทราบหรือไม่?