【发布时间】:2015-08-14 03:28:54
【问题描述】:
我在尝试使用 ASP.NET 更新 MVC 5 中的 AspNetUsers 数据库时遇到问题。
我正在尝试更改用户 Credits 中的值,该值存储在定义为 Models.UserDB2.AspNetUsers 的数据库中。
但是,当我尝试这样做时,我得到了这个错误。
在 EntityFramework.SqlServer.dll 中发生了“System.Data.Entity.Core.EntityException”类型的第一次机会异常 致命错误:在提供程序连接上启动事务时发生错误。有关详细信息,请参阅内部异常。`
内部异常:
EntityFramework.SqlServer.dll 中发生的“System.Data.Entity.Core.EntityException”类型的第一次机会异常是内部异常
这是导致错误的代码。
if(player != null) {
foreach(Models.Item item in itemDB.Items) {
if(item.UserAssetOptionId == id) {
if(!item.Owner.ToLower().Equals(username.ToLower())) {
return Content("false");
} else {
item.Owner = "HomeguardDev";
item.InMarket = true;
player.Credits += item.Value / 10;
try {
itemDB.SaveChanges();
userDB2.SaveChanges();
return Content("true");
} catch(Exception e) {
Debug.WriteLine("FATAL ERROR: " + e.Message);
return Content("false");
}
}
}
}
}
如果我只更新 itemDB 数据库,则数据库更新正常,但我还需要更新 Credits 值!
模型已使用数据库的最新架构进行更新,因此没有问题。
有人知道怎么回事吗?
【问题讨论】:
-
请发布内部异常详细信息。
-
EntityFramework.SqlServer.dll 中发生的“System.Data.Entity.Core.EntityException”类型的第一次机会异常是内部异常
-
我认为在迭代
itemDB.Items时不能调用itemDB.SaveChanges();。在foreach之后尝试保存 -
它在保存更改后以返回结束迭代,这应该不是问题。
-
还在
foreach,表示事务还在忙。
标签: c# asp.net-mvc entity-framework