linq到实体数据库没有更新

时间:2014-03-09 20:51:20

标签: c# linq entity

我正在用C#winforms创建一个程序,它跟踪游戏统计数据并将它们传递给数据库。我写的代码没有抛出任何错误,并且已经两次更新了第一个条目。在其他每个场合,它都运行代码并且什么也没做。据我所知它看起来正确,我在其他地方找不到任何帮助。

数据已存储在每个播放器的数组中。在更新之前,循环通过循环选择阵列中的每个玩家并将细节传递给DB中的相应条目。然后,在循环并更新下一个播放器之前,数据库需要更新。

这是我的代码:

public void updateDB()
    {
        //WHY ARE YOU NOT UPDATING THE DB?>?>?>?>?>?>?>?>
        using (var context = new BeerPongEntities6())
            for (int i = 0; i < 3; i++)
            {
                int ID = Convert.ToInt16(Players[i].playerID);
                var query = from p in context.PlayerDetails
                    where p.PlayerID == ID
                    select p;

                var playerUpdate = query.FirstOrDefault();

                playerUpdate.TotalShots += Players[i].totalShots;
                playerUpdate.TotalCups += Players[i].totalCups;
                playerUpdate.TotalMisses += Players[i].totalMisses;
                playerUpdate.TotalBounceShots += Players[i].totalBounce;
                playerUpdate.TotalBounceCups += Players[i].totalBounceCups;
                playerUpdate.TotalOverthrows += Players[i].overthrows;                 

                playerUpdate.GamesPlayed += 1;

                //if statements to determine whether you won or lost
                if ((winner == 1)) //Players 1 and 3 (Team1)
                {
                    if (i == 0 || i == 2)
                    {
                        playerUpdate.GamesWon += 1;
                    }
                    else
                    {
                        playerUpdate.GamesLost += 1;
                    }
                }
                if (winner == 2) //players 2 and 4 (Team2)
                    {
                        if (i == 1 || i == 3)
                        {
                            playerUpdate.GamesWon += 1;
                        }
                        else
                        {
                            playerUpdate.GamesLost += 1;
                        }
                    } 
                    //Save the stats to the DB
                        context.SaveChanges();
            }
                    myPlayer.allPlayers();
                    MessageBox.Show("Stats Database updated");
    }

1 个答案:

答案 0 :(得分:0)

由于某种原因,数据库不喜欢更新NULL属性。我将DB条目更改为默认值为0.一旦我完成了这些属性更新。