簡體   English   中英

SaveChanges拋出System.Data.Entity.Core.EntityException

[英]SaveChanges throws System.Data.Entity.Core.EntityException

我在嘗試使用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值!

該模型將使用數據庫的最新架構進行更新,因此在那里沒有問題。

有人知道怎么回事嗎?

問題是,您仍在迭代itemDB.Items時嘗試將更改保存到itemDB ,請嘗試將代碼更改為:

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;
                break;
            }
        }
    }
    try {
        itemDB.SaveChanges();
        userDB2.SaveChanges();
        return Content("true");
    } catch (Exception e) {
        Debug.WriteLine("FATAL ERROR: " + e.Message);
        return Content("false");
    }
}

只要您處於foreach ,就無法開始第二筆交易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM