2012-05-23 53 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中是否有任何相关实体? –