คำถามติดแท็ก orm

การทำแผนที่วัตถุเชิงสัมพันธ์ (ORM) เป็นเทคนิคสำหรับการทำแผนที่ระหว่างระบบเชิงวัตถุและฐานข้อมูลเชิงสัมพันธ์

8
ORM เป็น Anti-Pattern หรือไม่ [ปิด]
ฉันมีการสนทนาที่กระตุ้นและขัดขวางมากกับเพื่อนร่วมงานเกี่ยวกับ ORM และข้อดีและข้อเสีย ในความคิดของฉัน ORM มีประโยชน์เฉพาะในกรณีที่หายาก อย่างน้อยในประสบการณ์ของฉัน แต่ฉันไม่ต้องการแสดงข้อโต้แย้งของตัวเองในเวลานี้ ดังนั้นฉันถามคุณคุณคิดอย่างไรเกี่ยวกับออม? ข้อดีและข้อเสียคืออะไร?

4
Entity Framework พร้อมระบบขนาดใหญ่ - จะแบ่งรุ่นอย่างไร
ฉันทำงานกับฐานข้อมูล SQL Server ที่มีมากกว่า 1,000 ตารางและอีกไม่กี่ร้อยครั้งและขั้นตอนที่เก็บไว้หลายพันรายการ เรากำลังมองหาที่จะเริ่มใช้ Entity Framework สำหรับโครงการใหม่ของเราและเรากำลังทำงานกับกลยุทธ์ของเราในการทำเช่นนั้น สิ่งที่ฉันวางสายคือวิธีที่ดีที่สุดในการแบ่งตารางออกเป็นรุ่นที่แตกต่างกัน (EDMX หรือ DbContext ถ้าเราใช้รหัสก่อน) ฉันสามารถนึกถึงกลยุทธ์บางอย่างได้ทันทีจากค้างคาว: แยกตามสคีมา เรามีตารางของเราแบ่งออกเป็นสกีมาโหล เราสามารถทำหนึ่งแบบต่อสคีมา แม้ว่ามันจะไม่สมบูรณ์แบบก็ตามเนื่องจาก dbo ยังคงมีขนาดใหญ่มากพร้อมกับ 500+ ตาราง / มุมมอง ปัญหาอีกประการหนึ่งคือหน่วยงานบางอย่างจะจบลงด้วยการทำธุรกรรมที่ครอบคลุมหลายรุ่นซึ่งเพิ่มความซับซ้อนแม้ว่าฉันจะถือว่า EF ทำให้ตรงไปตรงมา แยกตามเจตนา แทนที่จะกังวลเกี่ยวกับสกีมาแบ่งโมเดลตามเจตนา ดังนั้นเราจะมีรูปแบบที่แตกต่างกันสำหรับแต่ละแอปพลิเคชันหรือโครงการหรือโมดูลหรือหน้าจอขึ้นอยู่กับวิธีที่เราต้องการได้รับเม็ด ปัญหาที่ฉันเห็นด้วยคือมีบางตารางที่จำเป็นต้องใช้ในทุกกรณีเช่น User หรือ AuditHistory อย่างหลีกเลี่ยงไม่ได้ เราเพิ่มสิ่งเหล่านั้นในทุกรุ่น (ละเมิด DRY ที่ฉันคิด) หรือเป็นรูปแบบแยกต่างหากที่ใช้โดยทุกโครงการหรือไม่ อย่าแยกเลย - โมเดลยักษ์ตัว นี้เห็นได้ชัดว่าง่ายจากมุมมองการพัฒนา แต่จากการวิจัยของฉันและสัญชาตญาณของฉันดูเหมือนว่ามันจะทำงานได้อย่างยอดเยี่ยมทั้งในเวลาออกแบบระยะเวลาการคอมไพล์และเวลาทำงาน วิธีที่ดีที่สุดในการใช้ EF กับฐานข้อมูลขนาดใหญ่เช่นนี้คืออะไร? …

14
SQL มีความสำคัญหรือไม่ถ้าฉันรู้ว่ากรอบ ORM นั้นดี? [ปิด]
ฉันไม่มีประสบการณ์ร้ายแรงใน SQL และฉันก็เกลียดที่จะเขียน SQL แทน LINQ ฉันมีความสุขมากกับ ORM จากนายจ้างและมุมมองของภาคมันเป็นสิ่งสำคัญที่จะรู้ SQL? ฉันต้องเป็นผู้เชี่ยวชาญในเรื่องนี้หรือไม่? บริษัท ที่ต้องการ SQL บริสุทธิ์มากกว่ากรอบ ORM เป็น "ไดโนเสาร์" ในโลกแห่งการเขียนโปรแกรมหรือไม่?

5
อะไรคือข้อดีของ myBatis over Hibernate [ปิด]
ฉันได้ทำการค้นคว้าด้วยตัวเองและเข้าใจแนวคิดพื้นฐานแล้ว แต่ข้อมูลเชิงลึกบางอย่างสามารถรับได้จากประสบการณ์จริงเท่านั้น อะไรคือข้อดีของ myBatis ที่จะทำให้คุ้มค่าในการเรียนรู้กรอบใหม่ คุณจะหลีกเลี่ยงการใช้งานในกรณีใด

5
ฉันควรตรวจสอบว่ามีบางสิ่งบางอย่างใน db และล้มเหลวอย่างรวดเร็วหรือรอข้อยกเว้น db
มีสองคลาส: public class Parent { public int Id { get; set; } public int ChildId { get; set; } } public class Child { ... } เมื่อกำหนดChildIdให้Parentฉันควรตรวจสอบก่อนว่ามันมีอยู่ในฐานข้อมูลหรือรอให้ฐานข้อมูลเกิดข้อยกเว้นหรือไม่ ตัวอย่างเช่น (ใช้ Entity Framework Core): หมายเหตุการตรวจสอบประเภทนี้มีอยู่ทั่วอินเทอร์เน็ตแม้ในเอกสารอย่างเป็นทางการของ Microsoft: https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using- mvc / handling-concurrency-with-the-entity-framework-in-an-asp-net-mvc-application # modified-the-department-controllerแต่มีการจัดการข้อยกเว้นเพิ่มเติมสำหรับSaveChanges นอกจากนี้โปรดทราบว่าจุดประสงค์หลักของการตรวจสอบนี้คือการส่งคืนข้อความที่เป็นมิตรและสถานะ HTTP ที่เป็นที่รู้จักแก่ผู้ใช้ API และไม่ละเว้นข้อยกเว้นฐานข้อมูลอย่างสมบูรณ์ และยกเว้นสถานที่เดียวที่จะถูกโยนอยู่ภายในSaveChangesหรือSaveChangesAsyncโทร ... ดังนั้นจะไม่มีข้อยกเว้นใด ๆ เมื่อคุณโทรหรือFindAsync …

7
จะแนะนำให้ใช้ ORM แทนขั้นตอนการจัดเก็บได้อย่างไร
ฉันทำงานที่ บริษัท ที่ใช้ขั้นตอนการจัดเก็บสำหรับการเข้าถึงข้อมูลทั้งหมดเท่านั้นซึ่งทำให้มันน่ารำคาญมากที่จะทำให้ฐานข้อมูลท้องถิ่นของเราตรงกันเนื่องจากทุกครั้งที่เราต้องเรียกใช้โปรแกรมใหม่ ฉันเคยใช้ 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 …

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

6
ฉันควรเลือก Doctrine 2 หรือ Propel 1.5 / 1.6 และทำไม [ปิด]
ฉันต้องการได้ยินจากผู้ที่ใช้ Doctrine 2 (หรือใหม่กว่า) และ Propel 1.5 (หรือใหม่กว่า) การเปรียบเทียบส่วนใหญ่ระหว่างผู้ทำแผนที่เชิงสัมพันธ์ของวัตถุทั้งสองนั้นอ้างอิงจากเวอร์ชันเก่า - Doctrine 1 เทียบกับ Propel 1.3 / 1.4 และ ORM ทั้งสองผ่านการออกแบบที่สำคัญในการแก้ไขล่าสุดของพวกเขา ตัวอย่างเช่นการวิพากษ์วิจารณ์ส่วนใหญ่ของ Propel นั้นดูเหมือนจะอยู่กึ่งกลางของคลาส"ModelName Peer " ซึ่งถูกคัดค้านใน 1.5 ทุกกรณี นี่คือสิ่งที่ฉันได้สะสมจนถึงขณะนี้ (และฉันพยายามทำให้รายการนี้สมดุลเท่าที่จะเป็นไปได้ ... ): ขับเคลื่อน ข้อดี เป็นมิตรกับ IDE อย่างยิ่งเนื่องจากมีการสร้างรหัสจริงแทนที่จะใช้วิธีเวทมนต์ PHP ซึ่งหมายความว่าฟีเจอร์ IDE เช่นการทำให้โค้ดสมบูรณ์มีประโยชน์จริง ๆ เร็ว (ในแง่ของการใช้ฐานข้อมูล - ไม่มีการทำวิปัสสนาบนฐานข้อมูล) ล้างการโยกย้ายระหว่างเวอร์ชันสกีมา (อย่างน้อยใน 1.6 เบต้า) …
30 php  orm  doctrine 

13
เกณฑ์สำหรับการประเมิน ORM for.NET คืออะไร? [ปิด]
ฉันกำลังดูการประเมินค่า ORM ผมเคยใช้SubSonic , Linq เพื่อ SQLและEntity Framework ฉันมีทีมนักพัฒนาตั้งแต่รุ่นน้องจนถึงรุ่นพี่ อะไรคือเกณฑ์ในการประเมิน ORM for.NET?
30 .net  orm 

2
มันสมเหตุสมผลไหมที่จะใช้ ORM ในการพัฒนา Android?
มันเหมาะสมหรือไม่ที่จะใช้ ORM ในการพัฒนา Android หรือเป็นเฟรมเวิร์กที่เหมาะสำหรับการเชื่อมต่อที่แน่นขึ้นระหว่าง UI และเลเยอร์ DB หรือไม่? ความเป็นมา : ฉันเพิ่งเริ่มต้นด้วยการพัฒนา Android และสัญชาตญาณแรกของฉัน (มาจากพื้นหลัง. net) คือการมองหา mapper เชิงสัมพันธ์วัตถุขนาดเล็กและเครื่องมืออื่น ๆ ที่ช่วยลด clode สำเร็จรูป (เช่น POJOs + OrmLite + Lombok ) อย่างไรก็ตามในขณะที่พัฒนาโปรแกรมประยุกต์ของเล่นครั้งแรกของฉันฉัน stumbled เมื่อชั้น UI AlphabetIndexerอย่างชัดเจนว่าต้องใช้เคอร์เซอร์ฐานข้อมูล: นั่นทำให้ฉันสงสัยว่าบางทีห้องสมุด Android อาจไม่เหมาะกับการแยก UI และเลเยอร์ DB อย่างเข้มงวดและฉันจะพลาดคุณสมบัติที่มีประโยชน์และประหยัดเวลามากมายถ้าฉันพยายามใช้ POJO ทุกที่ (แทนที่จะเข้าถึงฐานข้อมูลโดยตรง) ) ชี้แจง : ฉันค่อนข้างตระหนักถึงข้อดีของการใช้ ORM …

3
SQL แบบอินไลน์ยังจัดอยู่ในประเภทการปฏิบัติที่ไม่ดีในขณะนี้ที่เรามี Micro ORMs หรือไม่?
นี่เป็นคำถามปลายเปิดเล็กน้อย แต่ฉันต้องการความคิดเห็นบางอย่างเนื่องจากฉันโตขึ้นในโลกที่สคริปต์ SQL แบบอินไลน์เป็นบรรทัดฐานจากนั้นเราทุกคนต่างก็ตระหนักถึงปัญหาการฉีด SQL ที่ใช้กันมากและ sql นั้นบอบบางเพียงใด ทำการปรับแต่งสตริงทั่วทุกที่ จากนั้นก็เริ่มรุ่งอรุณของ ORM ซึ่งคุณได้อธิบายการสืบค้นไปยัง ORM และปล่อยให้มันสร้าง SQL ของตัวเองซึ่งในหลายกรณีนั้นไม่เหมาะสมแต่ปลอดภัยและง่าย สิ่งที่ดีอีกอย่างเกี่ยวกับ ORMs หรือเลเยอร์สิ่งที่เป็นนามธรรมของเลเยอร์คือว่า SQL นั้นถูกสร้างขึ้นด้วยเอ็นจิ้นฐานข้อมูลของมันดังนั้นฉันสามารถใช้ Hibernate / Nhibernate กับ MSSQL, MYSQL และรหัสของฉันไม่เคยเปลี่ยน ตอนนี้ก้าวไปข้างหน้าอย่างรวดเร็วจนถึงปัจจุบันซึ่ง Micro ORM ดูเหมือนจะชนะมากกว่านักพัฒนาอื่น ๆ ฉันสงสัยว่าทำไมเราถึงได้นำ U-Turn มาใช้กับเรื่องทั้งหมดในตาราง ฉันต้องยอมรับว่าฉันชอบความคิดที่ว่าไม่มีไฟล์ ORM config และความสามารถในการเขียนข้อความค้นหาของฉันในลักษณะที่เหมาะสมที่สุด แต่รู้สึกเหมือนฉันกำลังเปิดตัวเองกลับสู่ช่องโหว่เก่า ๆ เช่นการฉีด SQL และฉันก็ผูกตัวเอง เอ็นจิ้นฐานข้อมูลหนึ่งดังนั้นถ้าฉันต้องการซอฟต์แวร์ของฉันเพื่อสนับสนุนเอนจินฐานข้อมูลหลายตัวฉันจะต้องทำการแฮ็คสตริงเพิ่มเติมซึ่งดูเหมือนว่าจะเริ่มทำให้โค้ดอ่านไม่ได้และเปราะบางยิ่งขึ้น (ก่อนที่ใครบางคนจะกล่าวถึงมันฉันรู้ว่าคุณสามารถใช้อาร์กิวเมนต์ที่อิงพารามิเตอร์กับ micro orms ส่วนใหญ่ที่ให้ความคุ้มครองในกรณีส่วนใหญ่จากการฉีด …
26 database  sql  orm 

2
แนวทางปฏิบัติที่ดีที่สุดสำหรับการรวมเป็นอนุกรมของการรวม DDD
ตามตรรกะโดเมน DDD ไม่ควรปนเปื้อนด้วยความกังวลทางเทคนิคเช่นการทำให้เป็นอันดับการทำแผนที่วัตถุสัมพันธ์ ฯลฯ ดังนั้นคุณจะทำให้เป็นอันดับหรือแมปสถานะของมวลรวมได้โดยไม่เปิดเผยต่อสาธารณะผ่านผู้ได้รับและ setters อย่างไร ฉันได้เห็นตัวอย่างมากมายสำหรับการใช้งานของที่เก็บ แต่ในทางปฏิบัติทั้งหมดนั้นอาศัยการเข้าถึงสาธารณะบนเอนทิตีและวัตถุค่าสำหรับการทำแผนที่ เราสามารถใช้การสะท้อนเพื่อหลีกเลี่ยงการเข้าถึงสาธารณะ แต่ IMO วัตถุโดเมนเหล่านี้จะยังคงขึ้นอยู่กับข้อกังวลเกี่ยวกับการทำให้เป็นอนุกรม เช่นคุณไม่สามารถเปลี่ยนชื่อหรือลบฟิลด์ส่วนตัวโดยไม่ต้องปรับแต่งการกำหนดค่าอนุกรม / การแมป ดังนั้นคุณต้องพิจารณาการทำให้เป็นอันดับซึ่งคุณควรเน้นไปที่ตรรกะของโดเมนแทน ดังนั้นการประนีประนอมที่ดีที่สุดที่จะทำตามที่นี่คืออะไร? อยู่กับ accessors สาธารณะ แต่หลีกเลี่ยงการใช้สิ่งอื่นนอกจากรหัสการแมป หรือว่าฉันเพิ่งพลาดอะไรบางอย่างที่ชัดเจน? ฉันสนใจอย่างชัดเจนในการซีเรียลไลซ์สถานะของวัตถุโดเมน DDD (การรวมที่ประกอบด้วยเอนทิตีและวัตถุค่า) สิ่งนี้ไม่เกี่ยวกับการทำให้เป็นอนุกรมในสถานการณ์สคริปต์ทั่วไปหรือการแปลงรหัสที่บริการไร้สัญชาติทำงานบนวัตถุคอนเทนเนอร์ข้อมูลอย่างง่าย

5
ORMs เปิดใช้งานการสร้างแบบจำลองโดเมนที่หลากหลายหรือไม่
หลังจากใช้ Hibernate ในโครงการส่วนใหญ่ของฉันเป็นเวลาประมาณ 8 ปีฉันได้ตกลงกับ บริษัท ที่ไม่สนับสนุนการใช้งานและต้องการให้แอปพลิเคชันโต้ตอบกับ DB ผ่านขั้นตอนการจัดเก็บเท่านั้น หลังจากทำสิ่งนี้สองสามสัปดาห์ฉันก็ไม่สามารถสร้างรูปแบบโดเมนที่หลากหลายของแอปพลิเคชันที่ฉันเริ่มสร้างได้และแอปพลิเคชันก็ดูเหมือนสคริปต์ธุรกรรมที่น่ากลัว ปัญหาบางอย่างที่ฉันพบคือ: ไม่สามารถนำทางกราฟวัตถุในขณะที่ขั้นตอนการจัดเก็บเพียงแค่โหลดข้อมูลขั้นต่ำซึ่งหมายความว่าบางครั้งเรามีวัตถุที่คล้ายกันที่มีเขตข้อมูลที่แตกต่างกัน ตัวอย่างหนึ่งคือ: เรามีขั้นตอนการจัดเก็บเพื่อดึงข้อมูลทั้งหมดจากลูกค้าและอีกวิธีหนึ่งในการดึงข้อมูลบัญชีรวมทั้งสองสามช่องจากลูกค้า ตรรกะจำนวนมากจบลงในคลาสตัวช่วยดังนั้นโค้ดจึงมีโครงสร้างมากขึ้น (โดยใช้เอนทิตีที่ใช้เป็นโครงสร้าง C แบบเก่า) โค้ดนั่งร้านน่าเบื่อมากขึ้นเนื่องจากไม่มีกรอบที่แยกชุดผลลัพธ์จากกระบวนงานที่เก็บไว้และวางไว้ในเอนทิตี คำถามของฉันคือ: มีใครอยู่ในสถานการณ์ที่คล้ายกันและไม่เห็นด้วยกับวิธีการจัดเก็บ? คุณทำอะไรลงไป? มีประโยชน์จริง ๆ ของการใช้กระบวนงานที่เก็บไว้หรือไม่ นอกเหนือจากจุดที่ไร้สาระของ "ไม่มีใครสามารถออกตารางลดลง" มีวิธีการสร้างโดเมนที่หลากหลายโดยใช้ขั้นตอนการจัดเก็บหรือไม่? ฉันรู้ว่ามีความเป็นไปได้ที่จะใช้ AOP ในการฉีด DAOs / ที่เก็บข้อมูลลงในเอนทิตีเพื่อให้สามารถนำทางกราฟวัตถุ ฉันไม่ชอบตัวเลือกนี้เนื่องจากอยู่ใกล้กับวูดู ข้อสรุป ก่อนอื่นขอบคุณทุกคำตอบของคุณ บทสรุปที่ฉันได้มาคือ ORM ไม่สามารถเปิดใช้งานการสร้างโมเดล Rich Domain (ตามที่บางคนกล่าวถึง) แต่มันทำให้การทำงานง่ายขึ้น ต่อไปนี้เป็นคำอธิบายโดยละเอียดเพิ่มเติมของข้อสรุป แต่ไม่ได้อยู่บนพื้นฐานของข้อมูลที่ยาก แอปพลิเคชันส่วนใหญ่ร้องขอและส่งข้อมูลไปยังระบบอื่น ในการทำสิ่งนี้เราสร้างสิ่งที่เป็นนามธรรมในเงื่อนไขของแบบจำลอง (เช่นเหตุการณ์ทางธุรกิจ) และโมเดลของโดเมนจะส่งหรือรับเหตุการณ์ …

3
ประโยชน์ของ“ Micro-ORM” คืออะไร?
ฉันได้มองหาสิ่งที่เรียกว่า "Micro ORMs" เช่น Dapper และ (ในระดับที่น้อยกว่าเนื่องจากอาศัย. NET 4.0) ขนาดใหญ่เนื่องจากสิ่งเหล่านี้อาจจะง่ายต่อการใช้งานในที่ทำงานมากกว่า ORM แบบเต็มเป่าตั้งแต่ระบบปัจจุบันของเรา มีความเชื่อมั่นอย่างสูงในขั้นตอนการจัดเก็บและจะต้องมีการปรับโครงสร้างที่สำคัญในการทำงานกับ ORM เช่น NHibernate หรือ EF ประโยชน์ของการใช้หนึ่งในสิ่งเหล่านี้ผ่าน ORM ที่มีคุณลักษณะครบถ้วนคืออะไร ดูเหมือนว่าเป็นเพียงเลเยอร์เล็ก ๆ รอบ ๆ การเชื่อมต่อฐานข้อมูลที่ยังคงบังคับให้คุณเขียน SQL ดิบ - บางทีฉันผิด แต่ฉันก็มักจะบอกเหตุผลของ ORMs ตั้งแต่แรกคือคุณไม่ต้องเขียน SQL มัน สามารถสร้างขึ้นโดยอัตโนมัติ โดยเฉพาะอย่างยิ่งสำหรับการรวมหลายตารางและความสัมพันธ์ในการจับคู่ระหว่างตารางซึ่งเป็นความเจ็บปวดที่ต้องทำใน SQL บริสุทธิ์ แต่ไม่สำคัญกับ ORM ตัวอย่างเช่นการดูตัวอย่างของ Dapper: var connection = new SqlConnection(); // setup …
21 .net  orm 

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

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