2014-10-10 48 views
4

我使用實體框架6代碼優先空數據庫。我已經創建了相當多的POCO類,它們具有相當複雜的類層次結構(相當數量的抽象類和相當多的具體類)。我希望能夠以某種方式修飾我的類,以便它們自動添加到DbContext中,而不必爲每個類創建DbSet屬性,但是我擔心這會在嘗試更新時導致問題 - 數據庫。 我在這裏看到了一些線程,有人似乎在問一個類似的問題,但是響應看起來更像是使用DbContext.Set()獲得對現有集合的引用。我必須在DbContext上創建顯式的DbSet屬性嗎?

+0

能否請你添加一個鏈接你提到的文章? – elolos 2014-10-10 15:02:38

+0

據我所知,答案是肯定的,你必須爲每個POCO類添加一個'DbSet'屬性。 – pquest 2014-10-10 15:08:44

+0

爲什麼你擔心這會導致問題?你總是可以試試你知道:) – 2014-10-10 15:14:16

回答

1

我發現我不需要爲每個類添加顯式DbSet屬性到DbContext,因爲EF會自動將所有相關類添加到模型中。

我能偷懶,只對一些類中使用DbContext.Set <>()方法中添加明確的屬性,然後引用任何其他類:

var q = from x in myContext.Set<myClass>() select x; 
2

如果您依賴於代碼優先遷移,那麼是的,EF使用您的DbContext上的反射來發現要創建的表。每個DbSet屬性都映射到數據庫中的表。

+0

非常感謝您的明確回答,儘管這非常令人失望。 – 2014-10-10 16:56:22

+1

雖然,我想我可以創建一個部分類,使用DbSets生成我想...聽起來很有趣:) – 2014-10-10 16:57:04

+0

@MattKnowles - 不要低估代碼生成的力量:)雖然我不確定努力是值得:「根據模型上的屬性自動生成DbSet道具」與「只是在引入新模型時添加該屬性」 – 2014-10-10 17:21:40

相關問題