Entity Framework фактически не сохраняет изменения - PullRequest
1 голос
/ 17 сентября 2010

Я только что начал набег на EF, и я пытаюсь обдумать это (как правило, достаточно просто). Однако по какой-то причине он на самом деле не сохраняет результаты, хотя, возможно, он кеширует значения какое-то время, а затем возвращается к предыдущим значениям?

using (IAPlayerEntities IAPE = new IAPlayerEntities()) {
                ObjectSet<Player> Players = IAPE.Players;
                if (Players.Count() > 0) {
                    Player currentPlayer = new Player();
                    bool LoggedIn = false;
                    Players.DefaultIfEmpty(null);
                    while (!LoggedIn) {
                        Console.WriteLine("Please enter your Username:");
                        string username = Console.ReadLine();
                        Console.WriteLine("Please enter your Password:");
                        string password = MaskLine();
                        currentPlayer = Players.FirstOrDefault(r => r.Password == password && r.Name == username);
                        LoggedIn = (currentPlayer != null);
                        if (!LoggedIn) {
                            Console.WriteLine("{0}Invalid combination, please try again.", Environment.NewLine);
                        }
                    }
                    Console.WriteLine("{0}Please choose your colony.", Environment.NewLine);
                    foreach (Colony col in currentPlayer.Colonies) {
                        Console.WriteLine(@"{0}{1}:{0}{2}{0}Level {3}", Environment.NewLine, col.ID, col.Name, col.Level);
                    }
                    Console.WriteLine();
                    int colID = -1;
                    string colStr = Console.ReadLine();
                    while (!int.TryParse(colStr, out colID) || !currentPlayer.Colonies.Any(e => e.ID == colID)) {
                        if (colStr.ToLower() == "q") {
                            Console.WriteLine("Goodbye!");
                            return;
                        }
                        Console.WriteLine("{0}Invalid Colony. Please try again.", Environment.NewLine);
                        colStr = Console.ReadLine();
                    }
                    Console.WriteLine("Please enter a new name for the colony:");
                    string colName = Console.ReadLine();
                    bool b = IAPE.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified).Any();
                    currentPlayer.Colonies.First(e => e.ID == colID).Name = colName;
                    int change = IAPE.SaveChanges();
                    if (change >= 1) {
                        Console.WriteLine("{0}Colony has been renamed.", Environment.NewLine);
                    } else {
                        Console.WriteLine("{0}Colony could not be renamed.", Environment.NewLine);
                    }
                } else {
                    Console.WriteLine("No Registered users");
                }
            }

Игнорируйте защищенный логин über, он только для того, чтобы получить от него сущность игрока для тестирования.

bool b устанавливается в true перед сохранением, а затем, если я использую отладчик для запуска той же строки на панели «Немедленное окно», тогда он показывает false. Что для меня означает, что это спасло? И если я перезапущу приложение после его закрытия, то измененное значение будет на месте. Но в конце концов он вернется к предыдущему значению, и если я проверю базу данных сразу после того, как она все еще показывает исходное имя, то я не совсем уверен, что здесь происходит?

Он работает на VCS2010, поэтому Framework 4.

Спасибо, Psy

Ответы [ 2 ]

2 голосов
/ 21 сентября 2010

Проверил, что SQL переходит в базу данных, и нормально, после некоторого исследования выяснилось, что у меня была копия базы данных в проекте, которая заменяла одну в выходных данных каждый раз, когда я перестраивал ее.

0 голосов
/ 17 сентября 2010

IAPE.Savechanges () в некоторый момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...