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

9
หนึ่ง DbContext ต่อคำขอทางเว็บ…เพราะอะไร
ฉันอ่านบทความจำนวนมากที่อธิบายถึงวิธีการตั้งค่า Entity Framework DbContextเพื่อให้มีการสร้างและใช้เพียงหนึ่งรายการต่อการร้องขอ HTTP ของเว็บโดยใช้เฟรมเวิร์ก DI ต่างๆ ทำไมนี่เป็นความคิดที่ดีตั้งแต่แรก? คุณได้รับประโยชน์อะไรบ้างจากการใช้วิธีการนี้ มีสถานการณ์บางอย่างที่จะเป็นความคิดที่ดีหรือไม่? มีสิ่งใดบ้างที่คุณสามารถทำได้โดยใช้เทคนิคนี้ที่คุณไม่สามารถทำได้เมื่อสร้างอินสแตนซ์DbContextของการเรียกเมธอดที่เก็บ?

12
Entity Framework: ฐานข้อมูลเดียว, หลาย DbContexts นี่เป็นความคิดที่ไม่ดีเหรอ? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดเมื่อเดือนที่แล้ว ปรับปรุงคำถามนี้ ความประทับใจของฉันไปวันที่ได้รับว่าจะหมายถึงการเป็นตัวแทนของฐานข้อมูลของคุณและทำให้ใบสมัครของคุณถ้าใช้ฐานข้อมูลหนึ่งที่คุณต้องการเพียงหนึ่งDbContextDbContext อย่างไรก็ตามเพื่อนร่วมงานบางคนต้องการแบ่งหน้าที่การใช้งานออกเป็นDbContextคลาสที่แยกกัน ฉันเชื่อว่าสิ่งนี้มาจากสถานที่ที่ดี - ความปรารถนาที่จะรักษาความสะอาดโค้ด - แต่ดูเหมือนว่าจะผันผวน ความกล้าของฉันบอกฉันว่ามันเป็นความคิดที่ไม่ดี แต่น่าเสียดายที่ความรู้สึกของฉันไม่เพียงพอสำหรับการตัดสินใจในการออกแบบ ดังนั้นฉันกำลังมองหา: A) ตัวอย่างที่เป็นรูปธรรมว่าทำไมสิ่งนี้จึงเป็นความคิดที่ไม่ดี B) รับรองว่าทั้งหมดนี้จะทำงานได้ดี


21
นิติบุคคลประเภท <type> ไม่ได้เป็นส่วนหนึ่งของรูปแบบสำหรับบริบทปัจจุบัน
ฉันกำลังเข้าสู่ Entity Framework แต่ฉันไม่แน่ใจว่าฉันพลาดจุดสำคัญในวิธีการแบบรหัสแรกหรือไม่ ฉันใช้รูปแบบพื้นที่เก็บข้อมูลทั่วไปตามรหัสจากhttps://genericunitofworkandrepositories.codeplex.com/และได้สร้างเอนทิตีของฉันแล้ว แต่เมื่อฉันพยายามเข้าถึงหรือแก้ไขเอนทิตีฉันพบสิ่งต่อไปนี้: System.InvalidOperationException: ประเภทเอนทิตีไม่ได้เป็นส่วนหนึ่งของแบบจำลองสำหรับบริบทปัจจุบัน มันเกิดขึ้นเมื่อฉันพยายามเข้าถึงจากที่เก็บของฉัน: public virtual void Insert(TEntity entity) { ((IObjectState)entity).ObjectState = ObjectState.Added; _dbSet.Attach(entity); // &lt;-- The error occurs here _context.SyncObjectState(entity); } ฐานข้อมูล (./SQLEXPRESS) ถูกสร้างอย่างดี แต่เอนทิตี (ตาราง) ไม่ได้ถูกสร้างเมื่อเริ่มต้น ฉันสงสัยว่าฉันจำเป็นต้องตั้งค่าการแมปเอนทิตีหรือไม่ EF ไม่สามารถทำสิ่งนี้ได้ด้วยตนเอง เอนทิตีของฉันคือ: public class Estate : EntityBase { public int EstateId { get; set; } …

14
วิธีแก้ไขข้อผิดพลาดการแปลง datetime2 นอกช่วงโดยใช้ DbContext และ SetInitializer
ฉันใช้ DbContext และ Code First API ที่แนะนำกับ Entity Framework 4.1 ข้อมูลแบบใช้ชนิดข้อมูลพื้นฐานเช่นและstring DateTimeคำอธิบายประกอบข้อมูลเดียวที่ฉันใช้ในบางกรณีคือ[Required]แต่ไม่ได้อยู่ในDateTimeคุณสมบัติใด ๆ ตัวอย่าง: public virtual DateTime Start { get; set; } subclass DbContextยังเป็นที่เรียบง่ายและดูเหมือนว่า: public class EventsContext : DbContext { public DbSet&lt;Event&gt; Events { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity&lt;Event&gt;().ToTable("Events"); } } ตัวเริ่มต้นกำหนดวันที่ในแบบจำลองเป็นค่าที่เหมาะสมในปีนี้หรือปีหน้า อย่างไรก็ตามเมื่อฉันเรียกใช้ initializer ฉันได้รับข้อผิดพลาดนี้ที่context.SaveChanges(): …

4
LINQ to Entities รองรับเฉพาะการหล่อ EDM แบบดั้งเดิมหรือชนิดการนับด้วยอินเทอร์เฟซ IEntity
ฉันมีวิธีการขยายทั่วไปดังต่อไปนี้: public static T GetById&lt;T&gt;(this IQueryable&lt;T&gt; collection, Guid id) where T : IEntity { Expression&lt;Func&lt;T, bool&gt;&gt; predicate = e =&gt; e.Id == id; T entity; // Allow reporting more descriptive error messages. try { entity = collection.SingleOrDefault(predicate); } catch (Exception ex) { throw new InvalidOperationException(string.Format( "There was an error retrieving …

5
จะบังคับให้ Entity Framework รับข้อมูลที่อัปเดตจากฐานข้อมูลได้อย่างไร?
ฉันกำลังใช้EntityFramework.Extended library เพื่อทำการอัพเดตเป็นกลุ่ม ปัญหาเดียวคือ EF ไม่ติดตามการอัปเดตแบตช์ที่ดำเนินการโดยไลบรารี ดังนั้นเมื่อฉันสอบถามDbContextอีกครั้งจะไม่ส่งคืนเอนทิตีที่อัปเดต ฉันพบว่าการใช้AsNoTracking()วิธีการในขณะที่สอบถามจะปิดใช้งานการติดตามและรับข้อมูลใหม่จากฐานข้อมูล อย่างไรก็ตามเนื่องจาก EF ไม่ได้ติดตามเอนทิตีที่สอบถามAsNoTracking()ฉันจึงไม่สามารถทำการอัปเดตข้อมูลที่สอบถามได้ มีวิธีใดที่จะบังคับให้ EF รับข้อมูลล่าสุดขณะติดตามการเปลี่ยนแปลง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.