คำถามติดแท็ก entity-framework

ORM ที่สร้างขึ้นโดย Microsoft และพร้อมใช้งานเป็นส่วนหนึ่งของ. Net Framework 3.5 และใหม่กว่า

6
เราควรเชื่อมโยงมุมมองกับคุณสมบัติของโมเดลหรือ ViewModel ควรมีเป็นของตัวเอง .. ?
ฉันเริ่มต้นโครงการด้วยสภาพแวดล้อมทางเทคนิคต่อไปนี้:. Net 4.0, Entity Framework 4.0, WPF พร้อมสถาปัตยกรรม MVVM ฉันเห็นตัวอย่างมากมายในเน็ตหนังสือบางเล่มเกี่ยวกับสภาพแวดล้อมนี้ ในตัวอย่างที่ผู้เขียนมีความคิดนี้: Viemodel จะมีตัวอย่างของคลาส Model (Entity Framework Entity เช่น Person) ผูกคอนโทรล WPF view เข้ากับคุณสมบัติของ Model ในขณะที่ผู้เขียนบางคนทำ: Viemodel จะเปิดเผยคุณสมบัติทั้งหมดของโมเดล เชื่อมโยงคอนโทรลมุมมอง WPF กับคุณสมบัติของ ViewModel แทนที่จะเชื่อมโยงกับโมเดลโดยตรง ดังนั้นเป็นความคิดที่ดีหรือไม่ที่จะให้มุมมองเชื่อมโยงคุณสมบัติจากแบบจำลองแทนที่จะเป็นมุมมองที่เปิดเผยตัวตน หรือจะเลือกอันไหนดีกว่ากัน?

7
การเขียน Data Access / Data Mapping Layer ของคุณเป็นแนวคิดที่“ ดี” หรือไม่?
ขณะนี้เรากำลังตกอยู่ในสถานการณ์ที่เรามีทางเลือกระหว่างการใช้ mapper เชิงสัมพันธ์เชิงวัตถุนอกกรอบหรือการรีดของเราเอง เรามีแอปพลิเคชั่นรุ่นเก่า (ASP.NET + SQL Server) ที่ซึ่ง data-layer & business-layer ถูกบดเข้าด้วยกันอย่างน่าเสียดาย ระบบไม่ซับซ้อนโดยเฉพาะอย่างยิ่งในแง่ของการเข้าถึงข้อมูล มันอ่านข้อมูลจากกลุ่มขนาดใหญ่ (35-40) ของตารางที่เกี่ยวข้องระหว่างจัดการกับมันในหน่วยความจำและบันทึกมันกลับไปที่ตารางอื่น ๆ ในรูปแบบสรุป ตอนนี้เรามีโอกาสในการปรับโครงสร้างใหม่และกำลังมองหาเทคโนโลยีที่จะใช้ในการแยกและจัดโครงสร้างการเข้าถึงข้อมูลของเราอย่างเหมาะสม เทคโนโลยีใดก็ตามที่เราตัดสินใจเราต้องการ: มีวัตถุ POCO ในรูปแบบโดเมนของเราซึ่งเป็นความไม่รู้เรื่องการคงอยู่ มีเลเยอร์นามธรรมเพื่อให้เราทดสอบหน่วยโมเดลวัตถุของเรากับแหล่งข้อมูลต้นแบบที่เยาะเย้ย เห็นได้ชัดว่ามีหลายสิ่งในนี้อยู่แล้วในแง่ของรูปแบบและกรอบ ฯลฯ ส่วนตัวผมกำลังผลักดันให้มีการใช้ EF ร่วมกับADO.NET หน่วยทดสอบ Repository Generator / POCO Entity ปั่นไฟ สามารถตอบสนองความต้องการทั้งหมดของเราสามารถรวมเข้ากับรูปแบบ Repo / UnitOfWork ได้อย่างง่ายดายและโครงสร้างฐานข้อมูลของเรานั้นมีความเป็นผู้ใหญ่ที่สมเหตุสมผล อย่างไรก็ตามคนอื่น ๆ ในกลุ่มกำลังแนะนำให้สถาปนิก / กลิ้ง DAL ของเราเองอย่างสมบูรณ์ตั้งแต่เริ่มต้น (DataMappers …

5
MVC, WCF, EF, LINQ - แค่ฉันเหรอ? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน8 ปีที่ผ่านมา ... หรือสิ่งต่าง ๆ มีความซับซ้อนมากขึ้น? สำหรับฉันดูเหมือนว่าคุณจำเป็นต้องรู้หลายสิ่งหลายอย่างในการ 'พัฒนา' แอป MS web ให้เหมาะสมในทุกวันนี้ ในวันที่ไม่ดีเมื่อเราไม่รู้ว่ามีอะไรดีกว่านี้เรามีตารางฐานข้อมูล ASP.NET, ADO.NET และคุณสร้างเว็บแอปโดยใช้แนวคิดที่เรียบง่าย ทุกวันนี้ดูเหมือนจะมีกรอบมากมายที่จะ 'ช่วย' คุณทำถูกต้อง แต่ฉันไม่เชื่อว่านี่จะทำให้ง่ายขึ้นและดีขึ้น ฉันมีความรู้สึกฉันจะเป็นคนกลุ่มน้อยที่มีความรู้สึกเช่นนี้ แต่มีใครอีกบ้างที่คิดว่าสิ่งต่าง ๆ เป็นบ้าไปหน่อย?

7
CodeFirst มีไว้สำหรับการใช้งานขนาดใหญ่หรือไม่?
ฉันได้อ่านข้อมูลเกี่ยวกับ Entity Framework โดยเฉพาะ EF 4.1 และตามลิงก์นี้ ( http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-) framework-4.aspx ) และเป็นแนวทางสำหรับ Code First ฉันคิดว่ามันเรียบร้อย แต่ฉันสงสัยว่า Code First ควรจะเป็นเพียงวิธีแก้ปัญหาสำหรับการพัฒนาอย่างรวดเร็วซึ่งคุณสามารถกระโดดได้อย่างถูกต้องโดยไม่ต้องวางแผนอะไรมาก

2
การย้ายฐานข้อมูลและสล็อตการปรับใช้ Azure
ฉันวางแผนที่จะส่งแอปพลิเคชันเว็บใหม่ไปยังบริการ Azure Web App (เว็บไซต์ Azure เดิม) ฉันต้องการใช้ประโยชน์จากสล็อตการปรับใช้เพื่อให้สามารถทดสอบการใช้งานของฉันก่อนที่จะผลักดันมันไปสู่การผลิต นั่นคือทั้งหมดที่ดีตราบใดที่ไม่มีการเปลี่ยนแปลง DB schema จำเป็นต้องใช้ แต่ถ้ามีการเปลี่ยนแปลงสกีมาฉันไม่สามารถมีซอฟต์แวร์เวอร์ชันสองเวอร์ชันที่ทำงานบน db เวอร์ชันเดียวกันได้ เนื่องจากฉันใช้ EF Migrations การกดไปที่สล็อตชั่วคราวจะส่งผลให้มีการอัปเดตฐานข้อมูลเป็นเวอร์ชันล่าสุดทันที ดังนั้นคำถามของฉันคือว่ามีการใช้สล็อตการปรับใช้ใด ๆ หรือไม่เมื่อต้องการโอนย้ายฐานข้อมูล ทำอย่างไรกับผู้ให้บริการ SaaS ขนาดใหญ่ พวกเขาทำการย้ายฐานข้อมูลทันทีด้วยเวอร์ชันใหม่หรือไม่ นั่นจะทำให้การหยุดทำงานของบางอย่างแน่นอน ฉันสามารถนึกถึงวิธีแก้ปัญหาที่ค่อนข้างซับซ้อนสำหรับปัญหานี้มีอะไรที่ง่ายบ้างไหม?

3
มันเป็นวิธีปฏิบัติที่ดีตั้งค่าสตริงการเชื่อมต่อในการตั้งค่าเว็บ?
เมื่อเร็ว ๆ นี้ฉันได้พูดคุยกับเพื่อนร่วมงานบางคนในที่ทำงานของฉันเพราะพวกเขาบอกว่าควรมีการเข้ารหัสการเชื่อมต่อสตริงที่ดีกว่า และฉันบอกว่าทำไมไม่ใช้การเชื่อมต่อสตริงที่กำหนดไว้ใน web.config เข้ารหัส? มันเหมือนกันและดีกว่าเพราะเอนทิตี้ของเฟรมเวิร์กตัวอย่างเช่นค้นหาชื่อของการเชื่อมต่อในเว็บ config ของแอพพลิเคชั่นตอนนี้ฉันอยากรู้จากจุดรักษาความปลอดภัยว่าอะไรดีกว่า

5
วิธีแก้ไขปัญหาการอ้างอิงแบบวงกลมด้วย JSON และ Entity
ฉันได้ทำการทดลองกับการสร้างเว็บไซต์ที่ใช้ประโยชน์จาก MVC กับ JSON สำหรับเลเยอร์งานนำเสนอและกรอบงานเอนทิตีสำหรับโมเดลข้อมูล / ฐานข้อมูล ปัญหาของฉันมาพร้อมกับการทำให้วัตถุโมเดลของฉันเป็นอนุกรมลงใน JSON ฉันใช้รหัสวิธีแรกในการสร้างฐานข้อมูลของฉัน เมื่อทำโค้ดวิธีแรกความสัมพันธ์แบบหนึ่งต่อหลายคน (parent / child) ต้องการให้เด็กมีการอ้างอิงกลับไปที่ parent (รหัสตัวอย่างของฉันเป็นตัวพิมพ์ผิด แต่คุณได้รับรูปภาพ) class parent { public List<child> Children{get;set;} public int Id{get;set;} } class child { public int ParentId{get;set;} [ForeignKey("ParentId")] public parent MyParent{get;set;} public string name{get;set;} } เมื่อส่งคืนวัตถุ "พาเรนต์" ผ่าน JsonResult ข้อผิดพลาดการอ้างอิงแบบวงกลมจะถูกส่งออกไปเนื่องจาก "child" มีคุณสมบัติของคลาสพาเรนต์ ฉันได้ลองใช้ …

2
การฉีดพึ่งพากับโซลูชัน n-tier Entity Framework
ขณะนี้ฉันกำลังออกแบบโซลูชัน n-tier ซึ่งใช้ Entity Framework 5 (.net 4) เป็นกลยุทธ์การเข้าถึงข้อมูล แต่ฉันกังวลเกี่ยวกับวิธีรวมการฉีดพึ่งพาเพื่อให้สามารถทดสอบ / ยืดหยุ่นได้ เค้าโครงโซลูชันปัจจุบันของฉันมีดังนี้ (โซลูชันของฉันชื่อ Alcatraz): Alcatraz.WebUI : การ asp.net เว็บฟอร์มโครงการส่วนติดต่อผู้ใช้ปลายด้านหน้าอ้างอิงโครงการAlcatraz.BusinessและAlcatraz.Data.Models Alcatraz.Business : โครงการห้องสมุดระดับมีตรรกะทางธุรกิจโครงการอ้างอิงAlcatraz.Data.Access , Alcatraz.Data.Models Alcatraz.Data.Access : ห้องสมุดชั้นโครงการบ้านAlcatrazModel.edmxและAlcatrazEntitiesDbContext อ้างอิงโครงการAlcatraz.Data.Models Alcatraz.Data.Models : โครงการห้องสมุดคลาสมี POCO สำหรับรุ่น Alcatraz ไม่มีการอ้างอิง วิสัยทัศน์ของฉันสำหรับวิธีการแก้ปัญหานี้จะทำงานเป็น web-UI จะยกตัวอย่างพื้นที่เก็บข้อมูลภายในห้องสมุดธุรกิจที่เก็บนี้จะมีการพึ่งพา (ผ่านตัวสร้าง) ของสตริงการเชื่อมต่อ (ไม่ใช่AlcatrazEntitiesอินสแตนซ์) web-ui จะรู้จักสตริงการเชื่อมต่อฐานข้อมูล แต่ไม่ใช่ว่าเป็นสตริงการเชื่อมต่อของเฟรมเวิร์กเอนทิตี ในโครงการธุรกิจ: public class InmateRepository : …

3
Entity Framework และการแยกชั้น
ฉันพยายามทำงานกับ Entity Framework เล็กน้อยและฉันมีคำถามเกี่ยวกับการแยกชั้น ฉันมักจะใช้ UI -> BLL -> วิธี DAL และฉันสงสัยว่าจะใช้ภาษา EF ที่นี่ได้อย่างไร DAL ของฉันมักจะเป็นอะไรที่ชอบ GetPerson(id) { // some sql return new Person(...) } BLL: GetPerson(id) { Return personDL.GetPerson(id) } UI: Person p = personBL.GetPerson(id) คำถามของฉันคือ: เนื่องจาก EF สร้างแบบจำลองและ DAL ของฉันมันเป็นความคิดที่ดีหรือไม่ที่จะห่อ EF ไว้ใน DAL ของฉันเองหรือแค่เสียเวลา? ถ้าฉันไม่ต้องการห่อ EF ฉันจะยังคงวาง Model.esmx …

5
ถ้า Repository Pattern overkill สำหรับ ORM สมัยใหม่ (EF, nHibernate) สิ่งที่เป็นนามธรรมที่ดีกว่าคืออะไร?
ฉันเพิ่งอ่านข้อโต้แย้งจำนวนมากต่อต้านการใช้รูปแบบพื้นที่เก็บข้อมูลกับ Entity Framework ORM ที่ทรงพลังเนื่องจากมีการรวมฟังก์ชั่นที่คล้ายกับพื้นที่เก็บข้อมูลพร้อมกับฟังก์ชั่นหน่วยการทำงานเช่นกัน อีกข้อโต้แย้งต่อการใช้รูปแบบสำหรับสถานการณ์เช่นการทดสอบหน่วยคือรูปแบบที่เก็บเป็นสิ่งที่เป็นนามธรรมเนื่องจากการใช้งานทั่วไปมีประโยชน์มากขึ้น IQueryable ข้อโต้แย้งเกี่ยวกับการใช้รูปแบบพื้นที่เก็บข้อมูลมีเหตุผลสำหรับฉัน แต่วิธีการทางเลือกของ abstractions ที่แนะนำมักทำให้เกิดความสับสนมากขึ้นและดูเหมือนจะเกินความเป็นปัญหาเช่นกัน วิธีการแก้ปัญหาของ Jimmy Bogards ดูเหมือนจะเป็นการผสมผสานของนามธรรมที่ออกไป แต่ยังแนะนำสถาปัตยกรรมของเขาเอง https://lostechies.com/jimmybogard/2012/10/08/favor-query-objects-over-repositories/ อีกตัวอย่างของที่เก็บที่ไม่จำเป็น .... แต่ใช้สถาปัตยกรรมของฉัน! http://blog.gauffin.org/2012/10/22/griffin-decoupled-the-queries/ อื่น ... http://www.thereformedprogrammer.net/is-the-repository-pattern-useful-with-entity-framework ฉันไม่พบวิธีการแทนที่ที่ชัดเจนหรือทางเลือกแทนวิธีการเก็บข้อมูลแบบ "ซับซ้อนมากเกินไป" ซึ่งไม่ได้มีการออกแบบตัวเองมากกว่า

5
ข้อผิดพลาดของการออกแบบโดเมนขับเคลื่อนด้วย Entity Framework
บทเรียนจำนวนมากเกี่ยวกับ DDD ที่ฉันศึกษาส่วนใหญ่จะครอบคลุมทฤษฎี พวกเขาทั้งหมดมีตัวอย่างรหัสพื้นฐาน (Pluralsight และคล้ายคลึงกัน) บางคนพยายามสร้างบทเรียนที่ครอบคลุม DDD ด้วย EF บนเว็บ หากคุณเริ่มศึกษาพวกเขาเพียงชั่วครู่ - คุณสังเกตได้อย่างรวดเร็วว่าพวกเขาแตกต่างกันมาก บางคนแนะนำให้แอพพลิเคชั่นมีน้อยที่สุดและเพื่อหลีกเลี่ยงการแนะนำเลเยอร์เพิ่มเติมเช่นที่เก็บข้อมูลด้านบนของ EFคนอื่น ๆ กำลังสร้างเลเยอร์เพิ่มเติมอย่างแน่นอนซึ่งมักจะละเมิด SRP ด้วยการฉีดDbContextเข้าไปใน Aggregate Roots ฉันขอโทษอย่างมากถ้าฉันถามคำถามตามความคิดเห็น แต่ ... เมื่อมาถึงการปฏิบัติ - Entity Framework เป็นหนึ่งใน ORMs ที่ทรงพลังและใช้กันอย่างแพร่หลาย คุณจะไม่พบหลักสูตรที่ครอบคลุมที่ครอบคลุม DDD ด้วยโชคไม่ดี ประเด็นสำคัญ: Entity Framework นำ UoW & Repository ( DbSet) ออกจากกล่อง รุ่นของคุณกับ EF มีคุณสมบัติการนำทาง กับ EF …

3
Entity Framework และการหลีกเลี่ยง Anemic Domain Model
ในตรรกะทางธุรกิจของเราบางครั้งเรามีวิธีการที่กำหนดไว้ดังนี้: User.ResetCourse(Course courseToReset) ปัญหาคือทั้งผู้ใช้และหลักสูตรเป็นวัตถุพร็อกซี Entity Framework ซึ่งหมายความว่าเมื่อเราเข้าสู่คุณสมบัติการนำทางทั้งผู้ใช้หรือหลักสูตรมันสามารถทำให้เกิดความนิยมอย่างมากในฐานข้อมูลเพราะวัตถุเหล่านั้นไม่ได้เป็น IQueryable ดังนั้นจึงวนซ้ำผ่านพวกเขาตามปกติ เพื่อแก้ปัญหานี้เราเปลี่ยนลายเซ็นเป็น: User.ResetCourse(MyDBContext db, Course courseToReset) ซึ่งหมายความว่าเราสามารถสอบถามฐานข้อมูลโดยตรงเพื่อทำการเปลี่ยนแปลงที่เราต้องการอย่างมีประสิทธิภาพ แต่การส่งบริบทฐานข้อมูลไปยังวัตถุทางธุรกิจดูเหมือนจะผิดพลาด หลังจากนั้นเราย้ายไปยังชั้นบริการที่ให้ผู้ใช้ซึ่งหมายความว่าเรามีสิ่งที่ชอบ: CourseService.ResetForUser(Course courseToReset, User forUser) บริการนี้มีการอ้างอิงถึง DBContext ที่ถูกสร้าง แต่ตอนนี้วัตถุธุรกิจของเราเป็นเพียงถุงข้อมูลที่ไม่มีพฤติกรรม (เช่นรุ่น Anemic Domain Model) เราจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร

1
การแยก ASP.NET IdentityUser จากเอนทิตีอื่นของฉัน
ฉันมีProjectName.Coreห้องสมุดที่มีตรรกะทางธุรกิจของฉันและหน่วยงานของฉันและพฤติกรรมของพวกเขา ขณะนี้ไม่มีความสัมพันธ์ใด ๆ กับ Entity Framework หรือ DAL อื่นใดเพราะฉันต้องการแยกสิ่งเหล่านั้นออกจากกัน การกำหนดค่า Entity Framework (ใช้ Fluent API) อยู่ในProjectName.Infrastructureโครงการเพื่อดูแลผลักดันเอนทิตีของฉันไปที่ EF โดยทั่วไปฉันจะไปในทิศทางของสถาปัตยกรรมที่คล้ายกับหัวหอม อย่างไรก็ตามเมื่อเพิ่มกรอบงาน ASP.NET Identity ลงในการผสมฉันต้องทำให้ApplicationUserเอนทิตีของฉันสืบทอดจากIdentityUserคลาส แต่ApplicationUserคลาสของฉันมีความสัมพันธ์กับเอนทิตีอื่น ในการสืบทอดจากIdentityUserฉันแนะนำการอ้างอิงถึง Entity Framework ในโครงการเอนทิตีของฉันที่เดียวที่ฉันไม่ต้องการทำ การดึงApplicationUserคลาสออกจากโครงการเอนทิตีและเข้าสู่Infrastructureโครงการ (เนื่องจากใช้ระบบเอกลักษณ์ของ Entity Framework) จะส่งผลให้มีการอ้างอิงแบบวงกลมดังนั้นจึงไม่มีทางที่จะไป มีวิธีใดบ้างรอบนี้เพื่อให้ฉันสามารถแยกสะอาดระหว่างสองชั้นนอกเหนือจากไม่ใช้ ASP.NET Identity?

2
เครื่องมือข้อมูล SQL Server & Entity Framework - มีการทำงานร่วมกันที่นี่?
ออกมาจากโครงการโดยใช้ Linq2Sql ฉันสงสัยว่าอีกอัน (ใหญ่กว่า) อาจผลักฉันเข้าไปในอ้อมแขนของ Entity Framework ฉันได้ทำการอ่านข้อมูลเกี่ยวกับเรื่องนี้แล้ว แต่สิ่งที่ฉันไม่สามารถหาได้นั้นเป็นเรื่องราวที่สอดคล้องกันเกี่ยวกับวิธีที่ SQL Server Data Tools และ Entity Framework ควร / สามารถ / อาจใช้ร่วมกันได้ พวกเขารู้สึกแยกกันโดยสิ้นเชิงและการใช้พวกมันเข้าด้วยกันเป็นวิธีที่ผิด? พวกเขามีมุมฉากเต็มเปาและฉันพลาดประเด็นไปหรือเปล่า? เหตุผลบางอย่างที่ฉันคิดว่าฉันอาจต้องการ: SSDT นั้นยอดเยี่ยมสำหรับการ 'คอมไพล์' (ตรวจสอบ) และ SQL เวอร์ชันและสกีมาที่ง่ายดาย แต่เรื่องราว 'การโยกย้าย / อัปเดต' SSDT ไม่น่าเชื่อถือ (สำหรับฉัน): "อัปเดตทุกอย่าง" ทำงานได้ดีสำหรับสคีมา แต่ไม่มีทาง (AFAIK) ที่จะสามารถทำงานกับข้อมูลได้ ในทางกลับกันฉันไม่ได้ลองการโยกย้าย EF เพื่อทราบว่ามันมีปัญหาที่คล้ายกันหรือไม่ แต่บิต Up / Down …

3
สถาปัตยกรรมที่พูดแล้ว abstraction layer ของฐานข้อมูลเช่น Entity Framework ของ Microsoft ทำให้ความต้องการ Data Access Layer แยกจากกันหรือไม่?
วิธีที่มันเป็น เป็นเวลาหลายปีที่ฉันจัดระเบียบโซลูชันซอฟต์แวร์ของฉันเช่น: Data Access Layer (DAL) เป็นนามธรรมธุรกิจของการเข้าถึงข้อมูล Business Logic Layer (BLL) เพื่อใช้กฎธุรกิจกับชุดข้อมูลจัดการการตรวจสอบความถูกต้อง ฯลฯ Utilities (Util) ซึ่งเป็นเพียงไลบรารีของวิธีการใช้งานทั่วไปที่ฉันสร้างขึ้นเมื่อเวลาผ่านไป Presentation Layer ซึ่งแน่นอนว่าอาจเป็นเว็บเดสก์ท็อปมือถือหรืออะไรก็ตาม วิธีที่มันเป็นตอนนี้ สำหรับสี่ปีที่ผ่านมาหรือดังนั้นฉันใช้ Entity Framework ของ Microsoft (ฉันมีอำนาจเหนือกว่า. dev dev) และฉันพบว่าการมี DAL กลายเป็นเรื่องยุ่งยากมากกว่าการทำความสะอาดเพราะบัญชี Entity Framework ได้ทำไปแล้ว งานที่ DAL ของฉันเคยทำ: มันสรุปธุรกิจของการรัน CRUDs กับฐานข้อมูล ดังนั้นฉันมักจะจบลงด้วย DAL ที่มีคอลเลกชันของวิธีการเช่นนี้: public static IQueryable<SomeObject> GetObjects(){ var db = …

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