2012-10-23 154 views
3

我試圖使用實體框架4爲我正在寫的小型數據庫應用程序保留下載文件的記錄。在運行應用程序時,我在.SaveChanges()方法之前設置了tableName.Add()方法之後的斷點,並且我可以看到保存到實體中的數據;那麼在調用.SaveChanges()方法之後我有另一個斷點,並查看數據庫以查找沒有記錄保存到它。我發現了很多類似的問題,但我還沒有找到解決我的特定問題的方法。這裏是代碼:實體框架4 SaveChanges方法不保存到數據庫

public void StartNewDownload(string FileID) 
    { 
     DateTime startTime = DateTime.Now; 

     FilesDBEntities db = new FilesDBEntities(); 
     int startedID = (from dr in db.tblDownloadResults 
         where dr.Value.Equals("Started") 
         select dr.ResultID).First(); 
     tblDownloads myDownload = new tblDownloads { FileID = FileID, StartDateTime = startTime, ResultID = startedID }; 
     db.tblDownloads.Add(myDownload); 
     db.SaveChanges(); 
    } 

任何幫助表示讚賞。

謝謝!

+1

如何「查看數據庫」?你有沒有嘗試閱讀你的應用程序中的實體?它有用嗎?我見過很多情況,那些使用CodeFirst並且在他們改變了某些內容後查看錯誤數據庫的人以及CodeFirst創建了一個保存數據的新數據庫。如果你可以閱讀你的應用程序中保存的內容,這意味着數據被保存在某處。 – Pawel

+0

Pawel,謝謝你的回覆。我可以看到這是一個潛在的原因。將調查並報告。謝謝。 –

+0

你總是可以使用'((IObjectContext)ctx).ObjectContext).Connection.ConnectionString'來獲取連接字符串,它會告訴你你打哪個數據庫。 – Pawel

回答

5

帕維爾,你指導我在正確的方向。該實體擁有數據,但我正在研究的數據庫沒有。但在閱讀您的評論後,我從Visual Studio運行該程序,並使用Process Monitor監視對* .sdf文件的任何操作。這有助於發現在構建解決方案時,它會爲bin \ Debug文件夾創建另一個數據庫文件。我忘記數據庫構建操作屬性被設置爲「內容」。

謝謝!

0

您可以使用SQL Server Profiler來查看實體框架是否確實調用了數據庫。

(不包括在SQL Server Express的工具)

+0

Edi,感謝您的回覆,並抱歉沒有提供其他信息。我正在使用SQL Compact而不是SQL Express。 SQL Profiler在這種情況下仍然有用嗎? –