2012-05-23 41 views
0

我當我試圖救我entitie buzzmate我有這樣的例外:的EntityFramework代碼首先異常

 An entity object cannot be referenced by multiple instances of IEntityChangeTracker. 

這是產生這種異常的代碼:

 var p = Session["mayaProfile"] as MayaProfile; 
     BuzzMate buzzmate = new BuzzMate(); 
     buzzmate.MayaProfile = p; 
     SocialBuzzCompaign socialcampaign = _buzzService.GetSocialBuzzCompaign(model.socialBuzzCompaignId); 
     //Ajouter le BuzzMate 
     buzzmate.SocialBuzzCompaign = socialcampaign; 
     buzzmate.JoiningStatus = JoiningStatus.Approved; 
     buzzmate.SelectionType = BuzzMateSelectionType.InvitedByBuzzLeader;      
     //try 
     // 
     _buzzService.AddBuzzMate(buzzmate); 

,這是方法AddBuzzMate:

public void AddBuzzMate(BuzzMate buzzMate) 
    { 
     _buzzMateRepository.Insert(buzzMate); 
     _buzzMateRepository.Save(); 
    } 

當我嘗試保存buzzmate我有例外

回答

1

問題很可能是p。不要使用會話中存儲的實體進行持久化,否則您將無法避免此錯誤。嘗試創建p的克隆,並將其分配給buzzmate,如果您使用相同的EF上下文來加載socialcampaign並堅持buzzmate它應該工作。

+0

是的Ladislav先生,實際上我使用模式庫和工作單元,所以我使用相同的上下文來加載我的實體,我會嘗試你的建議! – ucef

+0

我嘗試你的建議來克隆p:MayaProfile maya =(MayaProfile)p.Clone();但問題仍然存在,這可能是由什麼造成的? BuzzMate buzzmate = new BuzzMate(); – ucef

+0

MayaProfile中是否有任何相關實體? –

相關問題