2010-04-15 66 views
2

我有以下代碼從數據庫中刪除一個用戶:LINQ到實體刪除例外

var user = from u in db.Users 
      where u.Username == username 
      select u; 

if (user.Count() > 0) 
{ 
    db.DeleteObject(user.First()); 
    db.SaveChanges(); 
} 

,但我得到的例外是這樣的:

at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager sta teManager, IEntityAdapter adapter) 
at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache) 
at System.Data.Objects.ObjectContext.SaveChanges(Boolean acceptChangesDuringSave) 
at System.Data.Objects.ObjectContext.SaveChanges() 
at MyCompany.SystemSoftware.DQMgr.User.DeleteUser(String username) in C:\workspace\SystemSoftware\SystemSoftware\src\dqm\User.cs:line 479 

Users表由幾個其他表引用。這可能是由外鍵約束引起的?

+2

什麼是異常消息? – SLaks 2010-04-15 19:30:28

+0

@SLaks異常消息在我的文章中。 – 5YrsLaterDBA 2010-04-15 19:36:47

+4

這就是堆棧跟蹤。什麼信息? – SLaks 2010-04-15 23:39:14

回答

1

解決這個問題的最簡單方法是將您的外鍵約束設置爲Drop on Drop,但這是在您準備丟失引用記錄的情況下。

否則,您可以嘗試將代表關係的屬性設置爲用戶對象上的null,然後刪除該用戶。