3
正如標題所說,我們時應申報類型DbSet的屬性的實體,一般準則?我們什麼時候應該使用DbSet與EF代碼優先
正如標題所說,我們時應申報類型DbSet的屬性的實體,一般準則?我們什麼時候應該使用DbSet與EF代碼優先
沒有一般的指導原則。 DbSet<YourEntity>
的實例是您的加載和持久化給定類型實體的接入點。如果您沒有在上下文類型中公開該屬性,則仍然可以使用dbContext.Set<YourEntity>()
即時創建該屬性。
暴露和不暴露屬性之間的唯一區別是在定義模型期間的實體發現。當EF首次使用時,它爲已定義的實體構建「模型」。實體通過發現:
DbModelBuilder
例如DbModelBuilder
比如在上下文類型定義DbSet<>
性質明確定義所以,如果你不使用DbSet<>
屬性,你必須告訴EF使用其他方法關於您的實體。
這是你提到的最後一點讓我困惑,如果實體引用發現那麼,爲什麼我們需要把他們在DbSet。 –
如果不首先使用兩個選項,你例如通過約定或通過數據註解使用映射你總是需要告訴至少約根實體EF,以便它可以通過引用發現其他。 –