2010-10-20 56 views
3

我有以下情況:實體框架也救不了關係

role.Permissions.Add(permission); 
objectContext.SaveChanges(); 

當我現在就在關係表Roles_Permissions新添加的權限,作用是不存在看一看。當我處理對象上下文時,它只保存新的關係。我做錯了什麼,或者對SaveChanges的調用不保存關係集上的更改?

+1

您使用EF4還是EF1.0? – 2010-10-20 19:09:47

+0

我正在使用實體框架4 – Mato 2010-10-20 22:00:17

+0

該代碼看起來很好。更有可能的是別的東西導致問題。您是使用POCO或任何自定義對象上下文(或工作單元),還是使用數據庫中的標準EF代碼? – RPM1984 2010-10-20 22:51:35

回答

0

聽起來好像您正在使用交易。

所做的更改在事務範圍外不可見,直到事務提交。

事務範圍直到對象上下文被處置時才被提交。

+0

我沒有使用交易。 EF有可能自動創建交易嗎?如果是這樣,我能以某種方式獲得交易來觸發提交嗎? – Mato 2010-10-21 12:11:11

+0

檢查構造函數或對象上下文的屬性。但是你應該儘快關閉你的對象上下文,所以它可能不是問題。 – 2010-10-21 12:38:17

0

只要檢查它們是否在同一個objectContext中。

0

可以確保您的許可的實體是已知你的對象上下文通過執行以下代碼行:

objectContext.AddObject("Permissions", permission); 
1

檢查ObjectStateManager - 調用的SaveChanges之前,對對象狀態管理器一看就得到所有具有添加狀態的更改 - 它應該只返回那個權限對象的一個​​項目。如果它不在那裏,還有其他的錯誤。調用SaveChanges應該保持您的更改。