2011-03-17 103 views
5

運行此代碼後,我發現我的數據庫中沒有entrys。 我從代碼沒有收到任何錯誤。C#Entitity框架SaveChanges()不起作用

有誰知道我蟎蟲做錯了什麼?

PeopleEntities1 db = new PeopleEntities1(); 


      Person roger = new Person() 
      { 
       age = 25, 
       firstname = "Roger", 
       lastname = "Rabbit", 
       location = "Canada", 
       job = "freelance", 


      }; 

      db.AddToPeople(roger); 
      db.SaveChanges(true); 
+2

您是否正在使用SQL Server,如果是,你可以運行SQL Profiler並查看針對數據庫執行的操作嗎? – 2011-03-17 02:53:27

+1

數據庫的位置是什麼?確保你不是每次運行代碼時將它複製到輸出目錄。我可能在每次運行我的應用程序時複製到輸出目錄的SQLite數據庫有類似的問題,這使我失去了我在上一次運行期間所做的更改。 – 2011-03-17 02:56:52

+0

這正是發生的事情;我在項目目錄中創建數據庫,但是當它在bin目錄中再次創建數據庫文件時。 – Roge 2011-03-17 03:19:20

回答

4

數據庫的位置是什麼?確保你不是每次運行代碼時將它複製到輸出目錄。我可能會遇到類似的問題,即每次運行我的應用程序時都會複製到輸出目錄,這使我失去了在上次運行時所做的更改

+1

我在2010 Express創建了一個標準的C#控制檯應用程序,使用嚮導來創建一個簡單的sql express數據庫文件,該文件放置在項目目錄中,使用嚮導生成實體數據模型基於新創建的db,寫了幾行來測試出實體。 問題是我每次運行應用程序時都會重新創建數據庫文件,無論在哪個目錄中,exe每次都會覆蓋自身,並完全忽略位於項目目錄中的原始數據庫文件dir – Roge 2011-03-17 04:22:46

+1

那麼對此有何解決方案? – 2014-03-20 05:00:23

1

而不是db.AddToPeople(),嘗試db.People.Add()。

另外,在db變量周圍使用using語句以確保正確地處理上下文和連接。

這是針對EF4和.NET 4.0的。

假設您有一個名爲「人員設置」的列表。

希望這會有所幫助! :)

下面是代碼:

所有的
using (PeopleEntities1 db = new PeopleEntities1()) 
{ 


      Person roger = new Person() 
      { 
       age = 25, 
       firstname = "Roger", 
       lastname = "Rabbit", 
       location = "Canada", 
       job = "freelance", 


      }; 

      db.People.Add(roger); 
      db.SaveChanges(true); 
} 
+0

我似乎沒有一個db.People.Add()方法;順便說一下,我用嚮導從DB創建我的實體類。 – Roge 2011-03-17 02:15:42

+0

好吧,根據複數形式,你可能有db.Persons – Russell 2011-03-17 02:21:31

+0

我最接近的是db.People.AddObject;這給出了與db.AddToPeople()相同的結果,運行時沒有錯誤但沒有DB中的條目。 – Roge 2011-03-17 02:34:03

1

首先,SaveChanges(true)是一種過時的方法,所以我不建議使用它。你嘗試過使用SaveChanges()嗎? Like in db.SaveChanges()

SaveChanges(boolean)最接近的方法是SaveChanges(SaveOptions),它會持續更新數據源並指定SaveOptions

+0

是的,我嘗試使用SaveChanges()而不帶參數。 – Roge 2011-03-17 02:31:49

+0

已棄用,但仍支持並應該可以工作 – BrokenGlass 2011-03-17 02:36:22

+0

您的原始評論可能是正確的 - 他需要運行分析器,並且確切地看*這是針對哪個數據庫運行的。我敢打賭,他有他的連接字符串混合起來 – 2011-03-17 03:17:42