2011-07-27 44 views
1

我想要的東西插入到本地數據庫,但它不工作..爲什麼我無法在數據庫中插入數據?

ModelContainer mc; 
    public DBController() 
    { 
     mc = new ModelContainer(); 

    } 

    public void SaveArtikel(string name) 
    { 
     mc.Connection.Open(); 
     int id = mc.Produkt.ToList().Last().ID + 1; 
     mc.Produkt.AddObject(new Produkt() { ID = id, Name = name }); 
     mc.SaveChanges(); 
     mc.Connection.Close(); 
    } 

這就是我tryed它。 (它與德國詞彙混合在一起) 之後,我有權訪問關鍵詞但它不在數據庫中。

編輯: db是一個.sdf文件。

我右鍵單擊該項目,然後我按下「新項目」。在那裏,我搜索「本地數據庫」(Compact服務器)

+1

你有沒有例外? 'mc.Produkt'包含任何元素。 –

+0

不,沒有例外,唯一的不在於db。 – Sunnygurke

+1

無法使ID列自動增加? – Eranga

回答

0

嗯,我想它的工作所有的時間..

我出版的項目,看看它是如何工作在那裏。經過多次測試,它看起來非常好。即使在我重新啓動電腦後,數據仍在數據庫中。

我不知道爲什麼我不能手動查看數據..但這沒有問題。

感謝所有幫助過我的人!

3
using (var mc = new ModelContainer()) 
{ 
    int id = mc.Produkt.Max(p=>p.ID) + 1; 
    mc.Produkt.AddObject(new Produkt() { ID = id, Name = name }); 
    mc.SaveChanges(); 
} 

你可以嘗試像上面的東西,也注意到,我改變了這一行mc.Produkt.ToList().Last().ID + 1;的原因是是什麼.ToList()確實是檢索所有數據庫記錄到內存中,然後搜索下一個可用的Id,在那裏,我只做了一條記錄。

+0

更好地檢查'mc.Produkt'中是否有元素,否則會導致異常 –

+0

感謝您的提示!是的,在db中有樣本數據集。 但它仍然不起作用。和之前一樣。 – Sunnygurke

+0

有沒有其他想法?我不知道我做錯了什麼.. – Sunnygurke

0

那麼,什麼可能已經發生在你身上,就是當你使用本地data.mdf它有一個屬性設置爲總是副本您調試bin文件夾,所以發生這種情況你調試和運行每次項目。如果將數據庫定位到bin文件夾中,則可以看到何時插入它,但是當再次運行該項目時,該表被清除。你需要做的是不斷跟蹤你的數據,將database.mdf上的屬性「複製到輸出目錄」更改爲「複製如果更新」。

相關問題