私は、アラートテーブルと多対多の関係を持つユーザーテーブルを持っています。 Membershipユーザーを作成した後、データベースに追加情報を追加します。Entity Framework: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アラート= 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