2012-12-12 30 views

回答

3

沒有一般的指導原則。 DbSet<YourEntity>的實例是您的加載和持久化給定類型實體的接入點。如果您沒有在上下文類型中公開該屬性,則仍然可以使用dbContext.Set<YourEntity>()即時創建該屬性。

暴露和不暴露屬性之間的唯一區別是在定義模型期間的實體發現。當EF首次使用時,它爲已定義的實體構建「模型」。實體通過發現:

  • 映射上DbModelBuilder例如
  • 配置類型明確登記在DbModelBuilder比如在上下文類型定義
  • DbSet<>性質明確定義
  • 通過已經發現的實體引用類型

所以,如果你不使用DbSet<>屬性,你必須告訴EF使用其他方法關於您的實體。

+0

這是你提到的最後一點讓我困惑,如果實體引用發現那麼,爲什麼我們需要把他們在DbSet 。 –

+0

如果不首先使用兩個選項,你例如通過約定或通過數據註解使用映射你總是需要告訴至少約根實體EF,以便它可以通過引用發現其他。 –

相關問題