2011-06-11 75 views
1

我有一個SQL Server CE數據庫文件,我有ADO.NET實體框架對象名爲History。我執行以下操作以獲得最新的ID:SQL Server CE數據庫和ADO.Net實體框架 - 數據沒有保存

var historyid = (from id in db.Histories // Get the current highest history Id 
       select (Int32?)(id.Id)).Max(); 

HistoryID = Convert.ToInt32(historyid); 

if (HistoryID == 0) // No current record exists 
{ 
    HistoryID = 1; // Set the starter history Id 
} 

(不是最好的方法,但它只是測試)。

此運作良好,並返回正確的值(如果我手動輸入的1的ID,則返回1,同樣用2等。)

的問題是用下面的代碼:

History history = new History(); 
history.Id = 1; 
history.SoftwareInstalled = "test"; 

db.AddToHistories(history); 
db.SaveChanges(); 

上述工作和運行良好,但更改不會保存到數據庫!爲什麼是這樣?

這裏是我的數據庫變量:dbDeSluggerEntities db = new dbDeSluggerEntities();

感謝。

編輯:這裏是一個更新:我注意到當我運行程序並調試它時,它顯示已經創建並插入了歷史記錄,並且還給出了已存在的主鍵的錯誤,每次運行時都會發生這種情況該應用程序(一遍又一遍)。但是,當我到服務器資源管理器並右鍵單擊數據庫並選擇「顯示錶數據」時,它將顯示沒有數據。當程序再次運行時,在調試中沒有主鍵錯誤或歷史記錄顯示!

+0

你能告訴我們你的連接字符串嗎?您每次啓動應用程序時是否可能重新創建數據庫? – 2011-06-11 20:04:50

回答

2

我有完全相同的問題。默認情況下,當您運行應用程序並使用該應用程序時,數據庫將被複制到您的bin文件夾中。

我的解決方案是進入數據庫的屬性,並將其設置爲永不復制,並將完整的文件路徑放入應用程序配置文件中的連接字符串中的數據庫。