目前我正在尝试通过 AJAX 向数据库表中添加一个新行,这工作正常。但后来我尝试更新另一个表,但出现错误。这是我的代码和我遇到的错误。
错误
无法附加该对象,因为它已经在对象上下文中。一个对象只有在它处于未更改状态时才能重新附加。
第 41 行:_db.ChampionCounters.Attach(champion);
代码
[HttpPost]
public ActionResult VoteYes(int id)
{
string results;
if (Request.IsAuthenticated)
{
var checkFirst =
from c in _db.UserCounterLinks
where c.counterId == id && c.userName == User.Identity.Name
select c;
if (checkFirst.Any())
{
results = "You have already voted on this counter.";
return Json(results);
}
var userVoteLink = new UserCounterLink { counterId = id, userName = User.Identity.Name, userAgree = true };
_db.UserCounterLinks.AddObject(userVoteLink);
var champion = _db.ChampionCounters.SingleOrDefault(c => c.id == id);
if (champion != null)
{
champion.positiveVotes++;
_db.ChampionCounters.Attach(champion);
}
_db.SaveChanges();
results = "Voted";
} else
{
results = "You must be logged in to vote.";
}
return Json(results);
}
概括
上面的代码来自处理 Ajax 帖子的控制器。就像我说的 userVoteLink 表创建一个记录就好了。但是当我尝试更新另一个表 ChampionCounters 时,会抛出错误。
提前致谢!