为什么我不能在数据库中插入数据?

时间:2011-07-27 06:29:18

标签: c# entity-framework ado.net

我正在尝试将某些内容插入本地数据库,但它不起作用..

    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)

3 个答案:

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