เกณฑ์สำหรับการประเมิน ORM for.NET คืออะไร? [ปิด]


30

ฉันกำลังดูการประเมินค่า ORM

ผมเคยใช้SubSonic , Linq เพื่อ SQLและEntity Framework ฉันมีทีมนักพัฒนาตั้งแต่รุ่นน้องจนถึงรุ่นพี่

อะไรคือเกณฑ์ในการประเมิน ORM for.NET?


8
ไม่มีสิ่งที่ดีที่สุด มีตัวเลือกมากมายที่มีข้อดีและข้อเสีย แต่ละคนนำสิ่งที่แตกต่างกันไปที่โต๊ะ
Tony

หนึ่งในการโต้แย้งคำศัพท์: ฉันจะบอกว่า SubSonic แน่นอนที่สุดไม่ใช่ออม รายละเอียดเพิ่มเติม .. exposer สัมพันธ์กับวัตถุ มันสามารถสร้างคลาสที่สะท้อนสคีมาของตารางฐานข้อมูลของคุณโดยตรง มันใช้งานได้ดีสำหรับส่วนใหญ่ แต่จุดการออกแบบนี้ค่อนข้างสำคัญเนื่องจากอยู่ในสนามเด็กเล่นที่แตกต่างจาก EF & NHib
quentin-starin

1
@ qstarin: นั่นทำให้ SubSonic มี ORM มากเท่ากับ LINQ-to-SQL
John Saunders

จุดที่ดีมากจอห์นและ qstarin เป็นสิ่งที่คุณจะจัดหมวดหมู่เป็น exposer สัมพันธ์กับวัตถุ SubSonic 3.0 นำเสนอฟีเจอร์ที่สอดคล้องกับแนวคิดของ ORM Wiki พูดว่า "การแปลงข้อมูลระหว่างระบบประเภทที่เข้ากันไม่ได้ในภาษาการเขียนโปรแกรมเชิงวัตถุสิ่งนี้จะสร้าง" ฐานข้อมูลวัตถุเสมือน "ที่สามารถใช้งานได้จากภายในภาษาการเขียนโปรแกรม" นอกจากนี้ในormbattle.net SubSonic ถือได้ว่าเป็น ORM ขอบคุณสำหรับคำติชมของคุณ
Nickz

2
ฉันเห็น Linq เพื่อ SQL มากขึ้นเช่นสรรเสริญ SQL กำเนิดกว่าออม ...
fretje

คำตอบ:


43

มันเป็นคำถามที่โหลด
มี ORM ที่ดีมากจำนวนมากที่เข้าใกล้หัวเรื่องด้วยปรัชญาที่แตกต่างกัน
ไม่มีใครที่สมบูรณ์แบบและมีแนวโน้มที่จะซับซ้อนทันทีที่คุณหลงทางจากเส้นทางสีทองของพวกเขา (และบางครั้งแม้เมื่อคุณติดอยู่)

สิ่งที่คุณควรถามตัวเองเมื่อเลือก ORM:

  1. คุณต้องทำอะไรเพื่อคุณ?
    หากคุณมีชุดข้อกำหนดสำหรับแอปพลิเคชันของคุณอยู่แล้วคุณควรเลือก ORM ที่ตรงกับสิ่งเหล่านี้มากกว่าที่จะเป็น 'ดีที่สุด' สมมุติฐาน

  2. ข้อมูลของคุณมีการแชร์หรือเฉพาะที่
    ความยุ่งเหยิงจำนวนมากใน ORM นั้นเกิดจากวิธีที่พวกเขาจัดการกับการเกิดพร้อมกันและการเปลี่ยนแปลงข้อมูลในฐานข้อมูลเมื่อผู้ใช้หลายคนกำลังถือข้อมูลรุ่นเดียวกัน
    ถ้าที่เก็บข้อมูลของคุณสำหรับผู้ใช้คนเดียว ORM ส่วนใหญ่จะทำงานได้ดี อย่างไรก็ตามถามคำถามยาก ๆ กับตัวเองในสถานการณ์ที่มีผู้ใช้หลายคน: การล็อคถูกจัดการอย่างไร? จะเกิดอะไรขึ้นเมื่อฉันลบวัตถุ มันส่งผลกระทบต่อวัตถุอื่น ๆ ที่เกี่ยวข้องได้อย่างไร ORM ทำงานใกล้เคียงกับโลหะของแบ็กเอนด์หรือแคชข้อมูลจำนวนมาก (ปรับปรุงประสิทธิภาพโดยเพิ่มค่าใช้จ่ายในการเพิ่มความเสี่ยงต่อความสกปรก)

  3. ORM เหมาะสำหรับแอปพลิเคชันประเภทของคุณหรือไม่ ORM ที่เฉพาะเจาะจงอาจทำงานได้ยาก (มีค่าโสหุ้ยในการทำงานจำนวนมากและยากที่จะเขียนโค้ด) หากใช้ในการบริการหรือนั่งอยู่ในเว็บแอป มันอาจจะยอดเยี่ยมสำหรับแอพเดสก์ท็อป

  4. คุณต้องยกเลิกการปรับปรุงเฉพาะฐานข้อมูลหรือไม่
    ORMs มักจะใช้ชุดตัวหารร่วมที่ต่ำที่สุดของ SQL เพื่อให้แน่ใจว่าพวกเขาทำงานกับแบ็กเอนด์ฐานข้อมูลที่แตกต่างกันมากมาย
    ORM ทั้งหมดจะประนีประนอมกับคุณสมบัติที่มีอยู่ (เว้นแต่ว่าพวกเขาจะกำหนดเป้าหมายแบ็กเอนด์เดียว) แต่บางอย่างจะช่วยให้คุณสามารถใช้พฤติกรรมเพิ่มเติมเพื่อใช้ประโยชน์จากการปรับปรุงเฉพาะที่มีอยู่ในแบ็กเอนด์ที่คุณเลือก
    การปรับปรุงเฉพาะ db ทั่วไปคือความสามารถในการค้นหาข้อความแบบเต็มตัวอย่างเช่น ตรวจสอบให้แน่ใจว่าออมของคุณมีวิธีการเข้าถึงคุณลักษณะเหล่านี้หากคุณต้องการ

  5. ORM จัดการการเปลี่ยนแปลงในตัวแบบข้อมูลอย่างไร
    บางคนสามารถอัปเดตฐานข้อมูลโดยอัตโนมัติภายในขอบเขตที่กำหนดบางอย่างไม่ทำอะไรเลยและคุณจะต้องทำงานสกปรกด้วยตัวเอง อื่น ๆ จัดเตรียมเฟรมเวิร์กสำหรับจัดการการเปลี่ยนแปลงที่ให้คุณควบคุมการอัพเดตฐานข้อมูล

  6. คุณคิดที่จะเชื่อมโยงแอปพลิเคชันของคุณกับวัตถุของ ORM หรือคุณต้องการจัดการกับ POCO และใช้อะแดปเตอร์เพื่อคงอยู่หรือไม่?
    อดีตมักจะง่ายต่อการจัดการ แต่สร้างการพึ่งพาวัตถุข้อมูลเฉพาะ ORM ของคุณทุกหนทุกแห่งหลังมีความยืดหยุ่นมากขึ้นในราคาของรหัสอีกเล็กน้อย

  7. คุณจะต้องถ่ายโอนวัตถุของคุณจากระยะไกลหรือไม่?
    ORM ทั้งหมดไม่เท่ากันเมื่อนำวัตถุออกจากเซิร์ฟเวอร์ระยะไกลให้ดูอย่างใกล้ชิดในสิ่งที่เป็นไปได้หรือเป็นไปไม่ได้ที่จะทำ บางตัวก็มีประสิทธิภาพ

  8. มีคนที่คุณสามารถหันไปขอความช่วยเหลือหรือไม่?
    มีการสนับสนุนทางการค้าที่ดีหรือไม่? ชุมชนรอบโครงการมีขนาดใหญ่และแอ็คทีฟขนาดเท่าใด
    ปัญหาที่ผู้ใช้ปัจจุบันมีกับผลิตภัณฑ์คืออะไร
    พวกเขาได้รับการแก้ปัญหาอย่างรวดเร็วหรือไม่?

ORM สองสามตัวที่ฉันดู:

  • XPO
    จากนักพัฒนาซอฟต์แวร์ Express: มีขนาดเล็กและเรียบง่ายมีรหัสเป็นศูนย์กลาง พวกเขาใช้มันสำหรับกรอบใบสมัครของพวกเขาeXpressApp
  • NHibernate
    ฟรี แต่ช่วงการเรียนรู้ค่อนข้างสูงชัน สารพัดมากมาย แต่ก็ยากที่จะหาสิ่งที่เกี่ยวข้องจริงๆในบางครั้งในเอกสารที่มีการแยกส่วนทั้งหมด
  • LLBLGen Pro
    โครงการที่เป็นผู้ใหญ่มากไม่ใช่ความคิดที่ง่ายที่สุด แต่มีการคิดมากเป็นอย่างมาก
  • Entity Framework
    กำลังไปที่นั่น รุ่นล่าสุดออกมาค่อนข้างดีและ MS ก็กำลังฟังอยู่แม้ว่ามันจะยังเด็กอยู่บ้างเมื่อเทียบกับ ORM ที่เป็นผู้ใหญ่มากกว่า
  • DataObject.Net
    ดูมีแนวโน้ม แต่ก็ค่อนข้างใหม่ที่จะเสี่ยงโครงการที่สำคัญเกี่ยวกับ IMHO ค่อนข้างใช้งานอยู่ว่า

แน่นอนว่ามีอีกหลายคน

คุณสามารถดูที่เว็บไซต์ที่มีการโต้เถียงORM Battleซึ่งแสดงรายการมาตรฐานประสิทธิภาพบางประการแม้ว่าคุณจะต้องทราบว่าความเร็วที่แท้จริงไม่จำเป็นต้องเป็นปัจจัยที่สำคัญที่สุดสำหรับโครงการของคุณและผู้ผลิตเว็บไซต์นั้นคือ DataObject.Net


3
เมื่อรู้ว่าคุณเลือกอะไร
Steven Evers

ขอบคุณ Renaud Bompuis ฉันไม่เคยได้ยิน ORM ที่ระบุ ข้อมูลที่คุณให้ไว้เป็นอาหารที่ยอดเยี่ยมสำหรับความคิดขอบคุณ
Nickz

1
@SnOrfus: ยังคงใช้ XPO แต่ฉันจะย้ายไป LLBLGen มันเป็นผู้ใหญ่และคุณยังคงควบคุม (ดังนั้นคุณยังสามารถทำให้มือสกปรกถ้าคุณต้องการ / ต้องการ) และช่วยแยกความกังวลและ วัตถุนำมาใช้ใหม่ (ผ่านอะแดปเตอร์)
Renaud Bompuis

3
เป็นที่น่าสังเกตว่า Entity Framework ตอนนี้เป็นเวอร์ชั่น 4.1 และแน่นอนว่าตอนนี้น่าจะดูคุ้มค่า
ฌอน Kearon

ฉันชอบ Procs ที่เก็บไว้บนเซิร์ฟเวอร์และ LINQ บนไคลเอนต์ ลองลงคะแนนนี้! ไม่มีเส้นโค้งการเรียนรู้ไม่มีความประหลาดใจไม่มีเวอร์ชันไม่มีความประหลาดใจ!
NoChance

14

ฉันใช้NHibernateและพบว่าค่อนข้างดี

ในกรณีของฉันเชื่อมโยงกับฐานข้อมูล MS SQL แต่คุณสามารถเชื่อมต่อกับฐานข้อมูลอื่น ๆ

ใช้เวลาไม่นานในการเริ่มต้นใช้งาน - เพียงจับคู่ออบเจ็กต์ของคุณกับโมเดล - ฉันใช้ไฟล์ xml แต่คุณสามารถทำได้อย่างคล่องแคล่วในโค้ด มีชุมชนที่ยอดเยี่ยมและโดยส่วนตัวฉันพบว่างานของ Ayendeมีประโยชน์มากฉันใช้ NHProf ซึ่งเป็นเครื่องมือทำโปรไฟล์ sql

ฉันส่วนใหญ่ใช้ฟังก์ชั่นนอกกรอบ - การแมปออบเจ็กต์แบบตรง แต่ฉันก็ใช้ภาษาฮิเบอร์เนทเควสต์ซึ่งค่อนข้างง่ายที่จะได้รับการตอบรับ


ระวัง NHibernate อาจเป็นเรื่องยากสำหรับรุ่นที่ซับซ้อนมากขึ้น ทุกอย่างเป็นเอกสารที่ดีและมีเหตุผลดี แต่ถ้าคุณไม่ทราบว่าคุณสามารถพบปัญหา กล่าวคือช่วงการเรียนรู้สูง แต่ยอดเยี่ยม
Matt Olenik

ขอบคุณ Sam ฉันไม่ได้ใช้ nhibernate แต่ดูเหมือนว่าต้องมีการกำหนดค่าที่กว้างขวางเมื่อเทียบกับ SubSonic, Linq-to-SQL และ Entity Framework สิ่งนี้จะไม่เหมาะสำหรับทีมพัฒนาของฉัน
Nickz

หากคุณสนใจ Ayende กำลังจัดเวิร์คช็อป NHibernate ในการประชุม YOW Australia - yowconference.com.au/melbourne/events_tracks/… - ในเดือนพฤศจิกายน / ธันวาคม หนึ่งในคนที่ฉันทำงานด้วยใช้มันอยู่พักหนึ่งดังนั้นฉันจึงได้รับประโยชน์จากการเรียนรู้จากเขา
Sam J

3
@Nick การกำหนดค่าส่วนใหญ่สามารถเป็นไปโดยอัตโนมัติ ฉันยังจะตรวจสอบเพิ่มได้อย่างคล่องแคล่ว
หิน

@Nick, @stonemetal เห็นด้วย Fluent NHibernate ทำให้ทุกอย่างง่ายขึ้น มันไม่เร็วเท่า SubSonic แต่ก็คุ้มค่ากับการดู
Matt Olenik

6

น่าเศร้าที่ในสามงานสุดท้ายของฉันเรามี ORM ที่ปลูกเองถึงสามบ้าน ในแต่ละกรณีพวกเขาส่วนใหญ่ดูดด้วยเหตุผลที่แตกต่างกัน

ฉันเพิ่งได้รับการประเมินEntity Framework 4และการสนับสนุน POCO (คำแนะนำที่ดีอยู่ที่นี่ ) และรู้สึกประทับใจอย่างมากกับการอยู่ห่างจากใบหน้าของฉันและทำให้ฉันรู้สึกว่าฉันกำลังเขียนโปรแกรมอีกครั้งมากกว่าการลงทุนในทิศทางเดียวกัน


ฉันได้ยินคุณเจสซี่งานก่อนหน้านี้ที่ฉันเคยอยู่ในตำแหน่งที่คุ้นเคยที่ได้รับการจัดการที่บ้าน ขอบคุณสำหรับคำติชม
Nickz

3
ORM ที่ปลูกที่บ้านจะดูดเสมอ คนที่ดีที่สุดนั้นแย่กว่า ORM สาธารณะที่ร้ายกาจที่สุดเสมอ
Jaco Pretorius

@JacoPretorius มีตัวอย่างที่เคาน์เตอร์เพื่อที่ ... แต่ "ตามกฎทั่วไป" ...
pst

6

คุณจะอธิบายเพิ่มเติมเกี่ยวกับสิ่งที่มันทำและทำไมคุณถึงแนะนำว่าเป็นการตอบคำถามที่ถาม "เชื่อมโยงเท่านั้นคำตอบ"ไม่ได้ค่อนข้างต้อนรับที่กองแลกเปลี่ยน
ริ้น

3

ฉันชอบ Linq ถึง SQL มาก มันง่ายและมีนักออกแบบที่ดี อย่างไรก็ตามฉันหวังว่าจะจบชีวิตได้ด้วยกรอบเอ็นติตี้ ฉันต้องการที่จะใช้ประโยชน์จากความสามารถในการปรับเปลี่ยนเครื่องกำเนิดไฟฟ้าเพื่อที่ฉันจะได้ปรับแต่งวัตถุ

ประโยชน์ที่ใหญ่ที่สุดที่พวกเขามีเหนือคนอื่น ๆ (ในความคิดของฉัน) คือพวกเขาออกนอกกรอบกับ VS สิ่งนี้ก็เป็นลบเช่นกันเมื่อคุณอยู่ในความเมตตาของ MS (ดู Linq ถึง Sql)


3

[การปฏิเสธความรับผิด: ฉันทำงานให้กับ DevExpress]

คุณสามารถดูภาพหน้าจอของการใช้งานทั่วไปที่สร้างขึ้นโดย DevExpress กรอบการประยุกต์ใช้ที่นี่ หน้านี้ยังมีบทวิจารณ์สั้น ๆ เกี่ยวกับผลิตภัณฑ์ของเรา สำหรับข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับสาเหตุที่ฉันขอแนะนำให้คุณตรวจสอบหน้าผลิตภัณฑ์ที่เกี่ยวข้องในเว็บไซต์ของเรา

สำหรับ DevExpress XAF และ XPO, นี่เป็นคำอธิบายที่ดีเกี่ยวกับเหตุผลในการเลือกกรอบโปรแกรมของเรา นอกจากนี้เรายังให้การสนับสนุนและเอกสารซึ่งเป็นเรื่องสำคัญและคุ้มค่าที่จะกล่าวถึง อย่าลังเลที่จะติดต่อเราในกรณีที่มีคำถามใด ๆ


ฉันยังใช้ XPO อยู่และฉันดีใจที่มีการอัปเดตที่จะเกิดขึ้น
Renaud Bompuis

2

เราใช้ NHibernate + Fluent NHibernate ด้วย Linq-to-Sql ในโครงการขนาดเล็ก เหตุผลนี้คือ:

1) (ไม่ใช่เหตุผลหลัก) NHibernate ดูเหมือนจะมีปัจจัย "ความเคารพ" ที่สูงขึ้นในหมู่นักพัฒนา (เป็นจริงหรือไม่)

2) เปรียบเทียบกับ linq-to-SQL, nHibernate อนุญาตการทำแผนที่ ORM ระหว่างวัตถุ Db และเอนทิตีที่ไม่แมป 1 ต่อ 1

3) เรายังไม่ได้ทำการเปรียบเทียบ nHibernate กับ Entity Framework 4.0 แต่นี่เป็นการเปรียบเทียบที่ดี: http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx

n ไฮเบอร์เนตมีเส้นโค้งการเรียนรู้ค่อนข้างสูงและแผนที่ XML ของมันค่อนข้างละเอียด แต่เริ่มต้นด้วยเอกสารไซต์ Fluent Nhibernate และย้อนกลับไปด้านหลัง


1

ไม่มีกรอบ ORM ที่ "ดีที่สุด" เพราะทุกคนมีจุดแข็งและจุดอ่อนที่แตกต่างกันและมีแนวโน้มที่จะเป็นเช่นนั้นหากผู้พัฒนาเลือกที่จะมุ่งเน้นที่การทำให้พื้นที่หนึ่งดีขึ้น แบบจำลองแรกเทียบกับฐานข้อมูลก่อน)

ในทางกลับกันมีของดี ๆ จำนวนหนึ่งซึ่งบางอันจะเหมาะกับสถานการณ์และปรัชญาส่วนตัวของคุณมากกว่าคนอื่น


แก้ไข: สำหรับสิ่งที่คุ้มค่าฉันกำลังใช้ Linq ไปยัง SQL - ส่วนใหญ่เป็นเพราะมีบางส่วนเพราะมันเหมาะสมมากสำหรับความพยายามน้อยที่สุดและอาจจะพัฒนา Entity Framework อีกครั้ง "เพราะมี" (แม้ว่าคล้ายกันยังมี มีอะไรมากมายเกี่ยวกับ EF4 ที่ถูกต้องและบางอย่างผิดปกติ) ความกังวลโดยเฉพาะอย่างยิ่งในเรื่องหลังจะต้องมีประสิทธิภาพ แต่สำหรับกรณีส่วนใหญ่ของฉันนั่นไม่ใช่ปัญหาใหญ่และความสามารถในการเรียกใช้ข้อมูลแบบไดนามิกและ OData จากรุ่น (L2S และ EF) มีประโยชน์มากมายสำหรับฉันในแง่ของ " ชนะ "ถูก"


ขอบคุณสำหรับคำติชมของคุณ Murph ฉันเห็นด้วยกับ ORM ที่ดีที่สุด อย่างไรก็ตามฉันมองไปที่การสร้างมาตรฐานมากขึ้น การใช้หนึ่งใน ORM จะช่วยให้นักพัฒนาใหม่และนักพัฒนาที่มีอยู่ในทีมของฉัน ปัจจุบันที่การใช้ทุกอย่าง subsonic, ADO.net, linq-to-sql และอื่น ๆ การย้ายระหว่างโครงการและการบำรุงรักษากลายเป็นเรื่องยากมากขึ้น
Nickz

โอ้ฉันไม่มีปัญหากับการค้นหาORM ที่เหมาะสมที่สุดสำหรับกรณีการใช้งานของคุณและฉันเห็นด้วยอย่างยิ่งกับความปรารถนาที่จะถามคำถามที่นี่ ฉันแค่ขับเคี่ยวแคมเปญไร้ประโยชน์ต่อการใช้คำว่า "ดีที่สุด" ในคำถามสแต็คการแลกเปลี่ยน (-:
Murph

1

ฉันจะแนะนำให้คุณมีลักษณะที่DevExpress XPO สิ่งนี้พร้อมกับDevExpress XAFจะทำให้ชีวิตของนักพัฒนาซอฟต์แวร์ง่ายขึ้นเมื่อการเรียนรู้ข้ามไป


XAF ขึ้นอยู่กับ XPO ซึ่งเป็น ORM XAF ตัวเองสร้างบนนี้และเพิ่มเป็นตรรกะและ "อัตโนมัติ" UI ฯลฯ
ซาช่า

โปรดอธิบายว่าทำไมคุณถึงเชื่อว่า DevExpress XAF จะทำให้ชีวิตของนักพัฒนาซอฟต์แวร์ง่ายขึ้น

@Sascha ขอบคุณสำหรับคำแนะนำของคุณ ฉันแก้ไขโพสต์ของฉันแล้ว
Yogi Yang 007

@ Mark, XAF พร้อมกับ XPO ทำงานเป็น ORM เช่นเดียวกับตัวกำเนิด UI ดังนั้นจึงเป็นเรื่องง่ายสำหรับนักพัฒนาในการสร้างแอปที่ทำงานได้อย่างสมบูรณ์ใน. NET ด้วยการเข้ารหัสขั้นต่ำ
Yogi Yang 007

หนึ่งความคิดเห็นจากด้านข้างของฉันถึง XAF: มันเป็นระบบที่ยอดเยี่ยมสำหรับสภาพแวดล้อมทางธุรกิจเชิงตรรกะระดับกลางที่ซับซ้อนเนื่องจากมันเพิ่มความเร็วในการพัฒนาเวลาสำหรับปัจจัยเหล่านั้น ข้อเสียคือว่าในขอบเขตที่กำหนดนั้นจะใช้เวลานานมากในการขยาย ตัวอย่างเช่นผู้ใช้แบบลำดับขั้น (รวมถึงตรรกะเช่นทีม) และ 'ผู้ใช้อาจเห็นรายการของตนเองและ / หรือผู้ใต้บังคับบัญชา' ไม่ได้รับการสนับสนุนนอกกรอบ ดังนั้น XAF จึงมีข้อดีข้อเสียที่จำเป็นต้องได้รับการประเมินถ้ามันเหมาะสมกับโครงการ - IMHO แต่มันก็เป็นรากฐานที่ดีถ้ามันพอดี
Sascha

1

เราโชคดีกับ Entity Framework สถานการณ์ของเราค่อนข้างผิดปกติ - เราทำการรวบรวมข้อมูลสำหรับทีมรายงานดังนั้นพวกเขาจึงออกแบบฐานข้อมูลจริง เราได้รับฐานข้อมูลจากนั้นเพียงใช้ EF เพื่อสร้างคลาสการเข้าถึงข้อมูลจากนั้น ใช้งานได้ดีสำหรับเรา แต่เราทำการโหลดข้อมูลจำนวนมากดังนั้นฉันไม่สามารถรับรองได้ว่ามันจะทำงานได้ดีเพียงใดในสภาพแวดล้อมการทำธุรกรรมที่มากขึ้น


2
ใช่ฉันเป็นแฟนของ EF 4 มันดีกว่ารุ่นก่อนหน้ามาก
Nickz

1

NHibernate (+ FluentNHibernate) จะเป็นตัวเลือกเริ่มต้นสำหรับฉัน มันมีความยืดหยุ่นขยายและแข็งแกร่ง มีผู้ใช้จำนวนมากและได้รับการดูแลอย่างดี ข้อเสียคือช่วงการเรียนรู้ที่สูงชัน

LightSpeed ​​ของ MindScapeนั้นเรียบง่ายและใช้งานง่าย แต่ยังคงความยืดหยุ่นและความสามารถพอสมควร มันมีพื้นผิวของนักออกแบบเช่น L2S / EF และการใช้งาน UnitOfWork


LightSpeed ​​ของ MindScape ดูน่าสนใจจริงๆ
Nickz

1

ดีไม่มีตัวเลือก "ดีที่สุด" แต่ฉันจะบอกว่าปกติ Linq กับ SQL ตรงกับความต้องการของคุณ มันไม่ได้เป็น ORM ที่ "จริง" ต่อ se แต่มันมีน้ำหนักเบามากและให้ความยืดหยุ่นในการเขียนโค้ดโดยที่ไม่รู้ตัวถ้ามันสมเหตุสมผล สิ่งที่ฉันหมายถึงคือคุณสามารถเขียนโค้ดต่อไปได้ตามปกติโดยไม่ต้องระวัง Linq จริงๆนอกจากการมีdbmlไฟล์ คุณยังสามารถเขียน abstractions ได้โดยใช้รูปแบบ Repository หรือ Gateway และ L2S เติมเต็มบทบาทหลักของ ORM ซึ่งคือการหลีกเลี่ยง Object-Relational Mismatch

Entity Framework นั้นค่อนข้างหนักและในขณะที่ฉันขลุกอยู่กับมันนิดหน่อยมันมากกว่า "พื้นฐานในหน้าของคุณ" มากกว่า Linq พื้นฐานถึง Sql แต่ EF นั้นเป็น ORM ที่แท้จริงมากกว่า Linq ฉันจะดูเกณฑ์ทั้งหมดที่คุณต้องการใน ORM เป็นเพราะคุณต้องการหลีกเลี่ยงการเขียน SQL ดิบหรือยิ่งกว่านั้นมีกระบวนงานที่เก็บไว้หลายร้อยรายการ คุณต้องการคุณสมบัติพิเศษบางอย่างที่ Linq ถึง SQL ไม่สามารถให้ได้หรือไม่ คุณต้องตอบคำถามเหล่านั้น แต่ตามความต้องการสั้น ๆ ของคุณ ("น้ำหนักเบาและใช้งานง่าย") ฉันคิดว่า Linq ง่ายกว่า Subsonic เล็กน้อยและติดตั้ง Visual Studio ในตัว


0

ECO :) มันเป็นมากกว่า ORM ในขณะที่รวมถึงเครื่องรัฐและ OCL ที่ปฏิบัติการได้ (คือ EAL) รองรับ มีรุ่นฟรีพร้อมข้อ จำกัด โดเมน 12 คลาสซึ่งฉันคิดว่าน่าจะเรียบร้อยสำหรับโครงการขนาดเล็ก


4
มันจะมีประโยชน์ถ้าคุณอธิบายว่าทำไม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.