我有一個MVC2應用程序,我開始使用STE的。我正在尋找關於更新應該如何工作的一些說明。自我跟蹤實體(STE)和EF4和mVC2的部分更新
背景:
如果我有相關的類別實體和相關崗位/評論實體博客實體。在MVC中,我使用主Blog實體和類別呈現視圖,但不顯示相關帖子。當我將博客實體回發到服務器時,我可以看到相關類別,但是在被序列化回服務器的實體中看不到帖子(因爲它們不在視圖中)。此外,博客實體的更改狀態爲「已添加」。
然後我嘗試撥打此博客實體上的Applychanges()
和SaveChanges()
來執行更新,並且由於FK與帖子的關係以及數據庫中存在相關帖子但未附加到實體的事實而失敗送回。
隨着一些進一步的測試...如果我連接到服務器(狀態=不變)時抓取博客實體的當前實例(與所有相關的FK實體),修改一個屬性(狀態=修改)並更新它按預期工作。
所以我的問題: 如果我有相關的未被呈現在視圖中,因此不回來後與博客實體應該更新實體機構開展工作?
爲什麼博客實體會以「已添加」狀態發回而不是「已修改」?我會假設它會返回所有已更改實體的「修改」更改狀態,然後當我調用ApplyChanges/SaveChanges()
時,只有修改的項目會嘗試更新,這就是爲什麼我不需要所有相關實體的原因。
我應該能夠直接從客戶端傳遞實體,還是應該將實體回傳給服務器,從數據庫中抓取現有副本,將更改應用到該副本,然後將現有對象發回?
我打算將此標記爲答案,因爲您確實提供了一些相關的良好反饋。但總體回答是,這不會像我預期的那樣使用MVC。我收到了迭戈維加在EF小組解釋原因的回覆。這裏是他的迴應鏈接: http://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/cecdc8b4-3e1f-46ec-93fe-fd44f42fea9c/#fb8a242b-c8f2-4ac2-a28c- 4b948cac8c8c – Jay 2010-03-10 14:37:39