0
我有一個用戶表,它具有與警報表的多對多關係。創建成員用戶後,我在數據庫中添加了一些額外的信息。實體框架:一個實體對象不能被IEntityChangeTracker的多個實例引用
MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email);
if (createStatus == MembershipCreateStatus.Success) {
User user = new MidTier.Models.User();
user.FullName = model.FullName;
if (Alerts.Count() > 0)
{
var userAlerts = SetAlert(Alerts); // creates an IEnumerable of Alerts (from a list of int)
foreach (var alert in userAlerts)
{
user.Alerts.Add(alert); //add each alert to the user
}
}
userRepository.Add(user); //throwing error
userRepository.Save();
}
我上調用Add方法得到一個錯誤(「一個實體對象不能被IEntityChangeTracker的多個實例的引用。」)。關於這個錯誤在網上有很多引用,即使在這裏,但在閱讀所有這些意見和建議後,我沒有找到解決方案或我得到這個錯誤的原因。
好吧,現在就明白了。謝謝,作爲參考這裏是我做的:在SetAlerts方法中,我有一個查詢來獲取警報(AlertType alert = alertRepository.First(a => a.ID == alertId);)。我需要分離該警報(alertRepository.Detach(alert);)。我正在使用通用存儲庫類,(http://blog.inetux.net/post/Entity-Framework-4-Series-Generic-Repository.aspx) – robasta
現在,當我保存時,它會創建一個新的用戶以及一個新的警報。我在這裏添加了一個不同的問題:http://stackoverflow.com/questions/6533440/entity-framework-many-to-many-relationship – robasta