我剛剛開始涉足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運行,因此框架4
謝謝,精神科
看起來它*應*保存更改回您的數據存儲。我會看看你的更新方法(你是否使用存儲過程,或其他映射更新更新?)和/或事務上下文,以開始戳它。 – 2010-09-17 16:05:44