天天看點

dbcontext 學習

1.include方法,預加載.當我們需要加載某些關聯的關系時,可是用Include方法

2.context.Entry(canyon).Collection(d => d.Lodgings).Load();

針對特别的實體類加載對應的關聯表資料.例如:班級和學生的關系資料.

3.context.Entry(blog).Collection(b => b.Posts)

          .Query()

          .Where(p => p.CreationTime >= new DateTime(2011, 1, 1))

          .Load();

Collection()方法在這裡傳回DbCollectionEntry,Query()方法傳回對應的IQueryable<T>對象。

4.在EF 4和EF 3.5 SP1中,我們可以使用ToTraceString()方法得到EF查詢所生成的SQL。 

5.asNoTracking()無跟蹤查詢.

  • DbSet.Find

  • DbSet.Local

  • DbSet.Remove

  • DbSet.Add

  • DbSet.Attach

  • DbContext.SaveChanges

  • DbContext.GetValidationErrors

  • DbContext.Entry

  • DbChangeTracker.Entries

在上面的方法中 會調用自動檢測功能。  這個功能預設是開啟的  當我們在做批量操作時 可以關閉這個來提高性能

context.Configuration.AutoDetectChangesEnabled = false;

6.當你準确的知道你的程式需要的實體關系圖時, 你可以使用 DbQuery 類中的 Include 方法或 DbExtensions 類中的 Include 方法的一個重載通過定義一個查詢路徑來控制哪些相關實體将會作為初始查詢的一部分傳回.

7.精确加載相關實體

 context.Entry(course).Reference("Department").Load();

繼續閱讀