ユーザーが asp.net mvc Web サイトのデータをページングできるように、セッションに保存するカスタム エンティティのリストがあります。ユーザーはこのリストを編集していませんが、すべてに目を通してから承認します。
List<scholarship> ss = x.scholarshipSet.Where(m => m.requriements != null).ToList();
Session["ListOfScholarships"] = ss;
彼らがリストに目を通し、承認されたことを確認したら、承認された日付をマークします。
CrmDataContext x = new CrmDataContext();
List<scholarship> ss = (List<scholarship>)Session["ListOfScholarships"];
DateTime n = DateTime.Now;
foreach (scholarship s in ss) {
s.Approved = n;
if (!x.IsAttached(s)) {
x.Attach(s);
}
x.UpdateObject(s);
}
x.SaveChanges();
コードのこの部分
if (!x.IsAttached(s)) {
x.Attach(s);
}
正しく動作していません。エンティティが既にアタッチされているかどうかを具体的にチェックするifステートメント内に入り、エラーをスローします
The 'scholarship' entity is already attached to a context.
セッションを使用しない場合、これは発生しません。エンティティが接続されていないと一瞬思って、次に接続されていることに気付くのはどうしてでしょうか? セッションがこの問題を引き起こすのはなぜですか?