1

所以我正在閱讀關於實體框架,並基於我的敏捷開發場景,我決定去與POCO對象。什麼是最好的POCO狀態跟蹤策略? (EF)

但現在我有一些額外的問題,我不知道如何擺脫。

我正在使用RIA服務和Silverlight,因此當我要保存服務器端的對象時,我必須將對象附加到ObjectContext。問題是,我必須將ObjectState更改爲已添加或已修改。

所以我的問題是什麼是真正知道什麼狀態改變它的最好方法。我在Julia Lerman的書中看到她在她的POCO對象中使用State屬性,並且在將對象發送到服務器之前負責管理客戶端的狀態。然後,該狀態將用於更改連接後的實體EntitySate。

我還看到其他樣本,其中插入實現檢查實體(對象)的密鑰以知道它是否是新建的。例如,如果我的Project實體中的ProjectId是0(零),我知道它必須是一個新對象。

說實話我不喜歡任何這些方法,因爲在這兩種情況下,我的開發人員必須做一些額外的工作才能真正保存對象。

我想知道這兩種解決方案的優點和缺點,希望有一個新的(更好的)解決方案,我還沒有選擇。

+0

你看過自我追蹤的實體嗎? – RPM1984 2010-11-16 10:09:04

+0

是的,但我需要使用POCO :( – sebagomez 2010-11-16 15:19:50

回答

0

您仍然可以擁有自我跟蹤實體和poco。在Visual Studio中,如果您搜索社區模板,則會自動跟蹤poco模板。這是你想要使用的。如果你可以使用Ientitywithobjecttracker找到你的實體的模板。

http://msdn.microsoft.com/en-us/library/dd456848.aspx

+0

我知道我可以...但我們正在做敏捷開發與unitesting,我們希望與POCO一起去,普通POCO – sebagomez 2010-11-18 12:37:58

+0

自我跟蹤實體是POCO,它們並不排除任何單元測試或敏捷實踐如果您製作了一個無法更改的模型,那麼您唯一的選擇就是自己管理更改跟蹤。您已經說過,您不希望開發人員必須編寫跟蹤代碼我個人會回過頭來看看如何通過STE POCO模板重新生成模型,另一種類型的跟蹤是通過EF代理進行的,但是當您使用RIA服務時,您不想沿着這條路線走下去,連續播放時,播放效果特別好(根據Julie Lerman的說法)。 – 2010-11-20 10:00:24