我正在尝试将某些内容插入本地数据库,但它不起作用..
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();
}
这就是我尝试它的方式。 (它与德语单词混合..) 之后我可以访问articel但它不在数据库中..
编辑: db是.sdf文件。
我右键单击了该项目,然后按下了“新项目”。在那里我搜索了“本地数据库”(Compact Server)
答案 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,我这样做的方式,只选择了一条记录。
答案 1 :(得分:0)
嗯,我认为它一直都有效..
我发布了该项目,看看它是如何运作的。经过多次测试,它看起来非常好。即使在我重新启动电脑之后,数据也在数据库中。
我不知道为什么我无法手动查看数据..但这没问题。
感谢所有帮助过我的人!
答案 2 :(得分:0)
嗯,你可能发生的事情是,当你使用本地data.mdf
时,它的属性设置为总是复制到你的调试bin文件夹,所以每次调试和运行项目时都会发生这种情况。如果您在bin文件夹中定位数据库,则可以看到插入内容时的内容,但是当您再次运行项目时,表将被清除。您需要做的就是不断跟踪数据,将database.mdf
上的“复制到输出目录”属性更改为“如果更新则复制”。