我有一个存储在会话中的自定义实体的列表,以便用户可以在 asp.net mvc 网站中对数据进行分页。用户没有编辑此列表,而是在查看所有内容后批准它。
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.
如果我不使用会话,则不会发生这种情况。怎么会前一秒认为实体没有附着,下一秒又意识到它附着了?为什么会话会导致这个问题?