2011-07-27 49 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上的属性“复制到输出目录”更改为“复制如果更新”。

相关问题