2

話:

何かを保存しようとすると奇妙なエラーが発生します。このエラー メッセージが表示されました

エンティティ オブジェクトは、IEntityChangeTracker の複数のインスタンスによって参照できません。

それが何であるか、なぜそれが表示されるのか本当にわかりません。挿入と更新が機能しているものを保存しようとしたときにのみ表示され、Telerik グリッドから db に何かを保存しようとしたときにのみ表示されます

    if (this.annualVacationList != null)
        {
            List<AnnualVacation> vacationToSave = this.annualVacationList;
            IEnumerable<AnnualVacation> existing = paramUser.AnnualVacations;
            foreach (AnnualVacation toSave in vacationToSave)
            {
                AnnualVacation existingItem = existing.Where(x => x.AnnualVacationId == toSave.AnnualVacationId).SingleOrDefault();
                if (existingItem == null)
                {
                    ctx.AddToAnnualVacations(toSave);
                }
                else
                {
                    existingItem.FromDate = toSave.FromDate;
                    existingItem.ToDate = toSave.ToDate;
                    existingItem.WorkingTime = toSave.WorkingTime;
                    existingItem.VacationDays = toSave.VacationDays;
                }
            }
        }
        ctx.SaveChanges();
    }

デバッグ後、コードが Project.Name.Designer.cs で壊れていることがわかりました ..... Oo

  public void AddToAnnualVacations(AnnualVacation annualVacation)
    {
        base.AddObject("AnnualVacations", annualVacation);
    }
4

1 に答える 1

0

ねえ

どういうわけか、ビューステートがコンテキストをデタッチしていないことを自分で取得しました。これが、作成したばかりの問題でした

var tmp = new AnnualVacation
                    {
                        FromDate = toSave.FromDate,
                        ToDate = toSave.ToDate,
                        WorkingTime = toSave.WorkingTime,
                        VacationDays = toSave.VacationDays,
                        UserId = toSave.UserId
                    };

上記の同じ if クエリ (if(existing Item==null)) で動作しますが、それでも私を助けようとしたすべての人に感謝します ^^

于 2012-12-04T14:19:17.437 に答える