ขณะนี้เรากำลังตกอยู่ในสถานการณ์ที่เรามีทางเลือกระหว่างการใช้ mapper เชิงสัมพันธ์เชิงวัตถุนอกกรอบหรือการรีดของเราเอง
เรามีแอปพลิเคชั่นรุ่นเก่า (ASP.NET + SQL Server) ที่ซึ่ง data-layer & business-layer ถูกบดเข้าด้วยกันอย่างน่าเสียดาย ระบบไม่ซับซ้อนโดยเฉพาะอย่างยิ่งในแง่ของการเข้าถึงข้อมูล มันอ่านข้อมูลจากกลุ่มขนาดใหญ่ (35-40) ของตารางที่เกี่ยวข้องระหว่างจัดการกับมันในหน่วยความจำและบันทึกมันกลับไปที่ตารางอื่น ๆ ในรูปแบบสรุป ตอนนี้เรามีโอกาสในการปรับโครงสร้างใหม่และกำลังมองหาเทคโนโลยีที่จะใช้ในการแยกและจัดโครงสร้างการเข้าถึงข้อมูลของเราอย่างเหมาะสม
เทคโนโลยีใดก็ตามที่เราตัดสินใจเราต้องการ:
- มีวัตถุ POCO ในรูปแบบโดเมนของเราซึ่งเป็นความไม่รู้เรื่องการคงอยู่
- มีเลเยอร์นามธรรมเพื่อให้เราทดสอบหน่วยโมเดลวัตถุของเรากับแหล่งข้อมูลต้นแบบที่เยาะเย้ย
เห็นได้ชัดว่ามีหลายสิ่งในนี้อยู่แล้วในแง่ของรูปแบบและกรอบ ฯลฯ
ส่วนตัวผมกำลังผลักดันให้มีการใช้ EF ร่วมกับADO.NET หน่วยทดสอบ Repository Generator / POCO Entity ปั่นไฟ สามารถตอบสนองความต้องการทั้งหมดของเราสามารถรวมเข้ากับรูปแบบ Repo / UnitOfWork ได้อย่างง่ายดายและโครงสร้างฐานข้อมูลของเรานั้นมีความเป็นผู้ใหญ่ที่สมเหตุสมผล
อย่างไรก็ตามคนอื่น ๆ ในกลุ่มกำลังแนะนำให้สถาปนิก / กลิ้ง DAL ของเราเองอย่างสมบูรณ์ตั้งแต่เริ่มต้น (DataMappers แบบกำหนดเอง, DataContexts, Repository, อินเทอร์เฟซทุกที่, overkill การพึ่งพาการพึ่งพาเพื่อสร้างออบเจกต์คอนกรีต, การแปลคำสั่ง LINQ-to-Underlying แบบกำหนดเอง, การนำแคชแบบกำหนดเองไปใช้ ฉันเป็นบ้า
ข้อโต้แย้งบางอย่างที่เกิดขึ้นคือ "อย่างน้อยเราก็จะสามารถควบคุมโค้ดของเราเองได้" หรือ "โอ้ฉันเคยใช้ L2S / EF ในโครงการก่อนหน้านี้และมันไม่มีอะไรนอกจากปวดหัว" (แม้ว่าฉันจะเคยใช้ทั้งในการผลิตมาก่อนและพบว่ามีปัญหาใด ๆ ที่อยู่ไกลและจัดการได้มาก)
ดังนั้น devs / สถาปนิกที่มีประสบการณ์สูงของคุณออกมามีคำใด ๆ ของภูมิปัญญาที่อาจช่วยให้ฉันคัดท้ายผลิตภัณฑ์นี้ออกไปจากสิ่งที่ฉันคิดว่ามันจะเป็นหายนะที่สมบูรณ์ ฉันอดไม่ได้ที่จะคิดว่าผลประโยชน์ใด ๆ ที่ได้รับจากการหลบปัญหาของ EF จะหายไปอย่างรวดเร็วด้วยการพยายามคิดค้นล้อใหม่