- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Controller ,它使用 Entity Framework 更新数据库中的值。不幸的是,当我运行我的应用程序时,它似乎根本不起作用。当我放置断点并单步执行代码的特定部分时,它可以完美运行。
这是我的 Controller 代码:
public ActionResult ManageGame(int id, FormCollection collection, string[] selectedPlayers)
{
var gameToUpdate = db.Games
.Include("Teams")
.Where(g => g.ID == id)
.Single();
if (TryUpdateModel(gameToUpdate, "", null, new string[] { "Players" }))
{
try
{
List<Player> team1Players = generateRandomTeam();
List<Player> team2Players = generateRandomTeam();
如果我在此处放置一个断点并单步执行其余代码,则没有问题,否则不会保存任何内容。
foreach (var team in gameToUpdate.Teams)
{
if (!team1added)
{
team.Players = team1Players;
team1added = true;
}
else
{
team.Players = team2Players;
}
}
db.Entry(gameToUpdate).State = EntityState.Modified;
db.SaveChanges();
}
catch (DataException)
{
ModelState.AddModelError("", "Unable to save changes.");
}
}
try
{
return RedirectToAction("Index");
}
catch
{
return View();
}
}
我感觉这是我将新团队分配到现有环境的方式,但从我读过的所有教程来看,这是他们这样做的方式,至少对于字符串值而言。有人知道我为什么会出现这种奇怪的行为吗?
*更新*已解决
我解决了我的问题。我的直觉是正确的,我只需要在将新的玩家组分配给现有团队之前添加 team.Players.Clear() 即可。
foreach (var team in gameToUpdate.Teams)
{
if (!team1added)
{
team.Players.Clear()
team.Players = team1Players;
team1added = true;
}
else
{
team.Players.Clear()
team.Players = team2Players;
}
}
当我没有那个时,我得到了一个主键冲突异常。不幸的是我没有看到这个异常,因为正如 DarK 所指出的那样,我的代码吞没了这个异常。因此,在添加 Clear() 方法后,一切都运行良好。
最佳答案
看来其他人也遇到过和你一样的问题。查看这些链接:C# code only gives expected results on step through? , Code runs correctly only when stepping through it with debugger?
因此,如果您多次实例化 Random 类,您会得到一些奇怪的结果。
编辑:
从您的代码来看,您似乎正在使用异常。您能否注释掉 try-catch 并在不调试的情况下运行它,看看它是否抛出任何异常?
关于c# - 为什么我的 ASP.NET MVC 3 with EF 应用程序只有在我调试时单步执行时才有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14917055/
我是一名优秀的程序员,十分优秀!