2010-05-05 117 views
2

我正在開發一個項目,並將實體框架4用作我的ORM。我正在實施POCO課程。我用EF 4和POCO看到的每個例子都實現了與公共設置者的所有屬性。這是我可以在EF 4上使用POCO課程的唯一方法嗎?我所有的創作者都需要公開嗎?實體框架4和公共屬性

回答

0
+0

我明白爲什麼這些房產標記爲虛擬,但爲什麼房產的設置者必須公開?我有對象的ID,我不希望外部對象修改。 – William 2010-05-05 22:04:00

+0

那麼該物業將如何設置? – 2010-05-05 22:17:01

+0

這就是我問的問題。我有屬性是對象標識符,一旦對象被加載/創建就不應該被修改。看來如果我使用EF 4和POCO類,這是不可能的。 – William 2010-05-06 03:10:33

1

這取決於你如何使用您的實體。

「POCO」實體是一種謊言(在任何框架中)。真正的POCO可能具有私有或非虛擬狀態,並且沒有序列化規定,因此無法進行變更跟蹤。在O/R映射中你可以用它們做的唯一事情就是實現它們。

因此,人們談論映射「POCO」時,通常會採取某種形式的妥協來允許更改跟蹤。他們不是真正的「POCO」;他們是「所謂的POCO」。

妥協的一種方法是公開所有持久狀態。然後,您可以通過快照進行更改跟蹤。

妥協的另一種方法是使所有持久狀態保護/虛擬。然後你可以通過代理來改變跟蹤。這些物業沒有必要公開。

EF不支持參數化構造函數(尚未),因此構造函數注入(可能是您的「純」POCO案例的最佳解決方案)現在不是一個選項。