ฉันทำงานที่ บริษัท ที่ใช้ขั้นตอนการจัดเก็บสำหรับการเข้าถึงข้อมูลทั้งหมดเท่านั้นซึ่งทำให้มันน่ารำคาญมากที่จะทำให้ฐานข้อมูลท้องถิ่นของเราตรงกันเนื่องจากทุกครั้งที่เราต้องเรียกใช้โปรแกรมใหม่ ฉันเคยใช้ ORM พื้นฐานบางอย่างในอดีตและฉันพบว่าประสบการณ์ดีขึ้นและสะอาดขึ้นมาก ฉันอยากจะแนะนำผู้จัดการฝ่ายพัฒนาและทีมอื่น ๆ ที่เราใช้ ORM เพื่อการพัฒนาในอนาคต (ทีมที่เหลือคุ้นเคยกับกระบวนการจัดเก็บเท่านั้นและไม่เคยใช้อะไรเลย) สถาปัตยกรรมปัจจุบันคือ. NET 3.5 ที่เขียนเหมือน. NET 1.1 โดยมี "god classes" ที่ใช้การดำเนินการแปลก ๆ ของ ActiveRecord และส่งกลับชุดข้อมูลที่ไม่ได้พิมพ์ซึ่งวนลูปในไฟล์ code-behind คลาสใช้งานดังนี้:
class Foo {
public bool LoadFoo() {
bool blnResult = false;
if (this.FooID == 0) {
throw new Exception("FooID must be set before calling this method.");
}
DataSet ds = // ... call to Sproc
if (ds.Tables[0].Rows.Count > 0) {
foo.FooName = ds.Tables[0].Rows[0]["FooName"].ToString();
// other properties set
blnResult = true;
}
return blnResult;
}
}
// Consumer
Foo foo = new Foo();
foo.FooID = 1234;
foo.LoadFoo();
// do stuff with foo...
สวยมากไม่มีแอพพลิเคชั่นลวดลายการออกแบบใด ๆ ไม่มีการทดสอบใด ๆ (ไม่มีใครรู้วิธีเขียนการทดสอบหน่วยและการทดสอบจะทำผ่านการโหลดเว็บไซต์ด้วยตนเองและเจาะเข้าไป) มองผ่านฐานข้อมูลของเราเรามี: 199 ตาราง, 13 มุมมอง, 926ขั้นตอนการจัดเก็บมากและ 93 ฟังก์ชั่น มีการใช้ตารางประมาณ 30 ตารางสำหรับงานแบ็ตช์หรืองานภายนอกส่วนที่เหลือจะใช้ในแอปพลิเคชันหลักของเรา
มันคุ้มค่าที่จะใฝ่หาแนวทางที่แตกต่างในสถานการณ์นี้หรือไม่? ฉันกำลังพูดถึงการก้าวไปข้างหน้าเท่านั้นเนื่องจากเราไม่ได้รับอนุญาตให้สร้างรหัสใหม่เนื่องจาก "ใช้งานได้" ดังนั้นเราจึงไม่สามารถเปลี่ยนคลาสที่มีอยู่ให้ใช้ ORM ได้ แต่ฉันไม่รู้ว่าเราเพิ่มโมดูลใหม่บ่อยแค่ไหน ของการเพิ่ม / แก้ไขโมดูลปัจจุบันดังนั้นฉันไม่แน่ใจว่า ORM เป็นวิธีการที่เหมาะสมหรือไม่ (ลงทุนมากเกินไปในขั้นตอนการจัดเก็บและชุดข้อมูล) หากเป็นตัวเลือกที่ถูกต้องฉันจะนำเสนอกรณีการใช้งานได้อย่างไร จากด้านบนของหัวของฉันประโยชน์เดียวที่ฉันสามารถคิดได้คือการมีโค้ดที่สะอาดกว่า (แม้ว่ามันอาจจะไม่ใช่เพราะสถาปัตยกรรมปัจจุบันไม่ใช่ ' t สร้างขึ้นด้วย ORMs ในใจดังนั้นโดยทั่วไปเราจะเป็นคณะลูกขุน rigging ORMs เพื่อโมดูลในอนาคต แต่คนเก่าจะยังคงใช้ชุดข้อมูล) และยุ่งยากน้อยกว่าที่จะต้องจำว่าสคริปต์ขั้นตอนที่ได้รับการทำงานและที่จะต้องทำงาน ฯลฯ แต่นั่นแหละและฉันก็ไม่รู้ว่าการโต้แย้งที่น่าสนใจจะเป็นอย่างไร การบำรุงรักษาเป็นเรื่องกังวลอีกเรื่องหนึ่ง แต่ไม่มีใครนอกจากฉันดูเหมือนจะเป็นกังวล