C# 无法使用saveChanges()方法将数据保存到实体模型数据库

C# 无法使用saveChanges()方法将数据保存到实体模型数据库,c#,database,entity-framework,insert,sql-update,C#,Database,Entity Framework,Insert,Sql Update,我正在尝试将数据保存到我的数据库中。我想要的是,当按下按钮时,数据将永久保存到数据库中。我做过一些测试,在应用程序运行时保存代码。保存的数据是可查看的。但是当我终止应用程序时,当我在VisualStudio中查看该表的数据时,数据不存在。我已经提供了用于测试的代码 private void btn_otrFun_Click(object sender, EventArgs e) { tblCheese cheese = new tblCheese(); s

我正在尝试将数据保存到我的数据库中。我想要的是,当按下按钮时,数据将永久保存到数据库中。我做过一些测试,在应用程序运行时保存代码。保存的数据是可查看的。但是当我终止应用程序时,当我在VisualStudio中查看该表的数据时,数据不存在。我已经提供了用于测试的代码

private void btn_otrFun_Click(object sender, EventArgs e)
    {
        tblCheese cheese = new tblCheese();
        string cheesename = "TestCheese";
        cheese.CheeseName = cheesename;
        cheese.CheeseGroup = 1;
        cheeseEntity.tblCheese.AddObject(cheese);
        cheeseEntity.SaveChanges();
    }
这里是我获取上下文表单的地方。它在表单开始时被实例化

 private CheeseWorld_DatabaseEntities cheeseEntity = new CheeseWorld_DatabaseEntities(); //instanciate new database entities
此外,我还使用这个片段从数据库中检索数据,并将其动态创建到按钮

var cheeselist = cheeseEntity.ExecuteStoreQuery<tblCheese>("Select * FROM tblCheese WHERE cheeseGroup = 1", null).ToList();
var cheeselist=cheeseEntity.executesToRequesty(“从tblCheese中选择*,其中cheeseGroup=1”,null)。ToList();

希望这些进一步的细节能有所帮助。如果需要更多,请告诉我。

您已经偏离了我们通常用于此的正常模式。。。也许试着把它放回到像这样的事情上。。。(我看不出你从哪里得到了背景)

文件中包括了这一点: (请注意底部,它显示了如何跟踪生成的SQL)


注意:我使用的是Add而不是AddObject

尝试返回一个受影响行数的
int
int rows=cheeseEntity.SaveChanges()
,以确保确实在更新表。另外,您可能希望将
SaveOptions
参数设置为
AcceptAllChangesAfterSave
。可能是鼠标有问题?根据Evan的建议,我将最后一行更改为int rows=cheeseEntity.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);更改仍然没有显示在数据库中。当我查看tblcheese的表数据时,我以前拥有的条目已经存在,但新条目不存在。但是,在应用程序中,它会出现。这正是让我困惑的地方。我自己正要发布这篇文章,我很好奇上下文是在哪里创建的。是的,看起来这是ASP.Net应用程序的一部分,如果上下文是一个局部变量或什么的,我认为它不会在事件中被持久化。这应该会导致一个NullReference异常,所以它不能解释他看到的行为。Jasmine,我试过你的方法。我没有得到add方法。相反,我得到的消息是“Add”没有定义。我把它改回addObject,它就可以工作了。但就像以前一样,问题仍然是一样的。至于上下文,我是从表格开头的前一句话中得到的。我把上下文称为cheeseEntity。如果您假设cheeseEntity是数据库名称,很抱歉造成混淆。是的,您使用了一种有趣的命名约定,很难分辨代码示例中的类型。如果您没有Add方法,这是一个很大的迹象,表明您使用的对象类型是错误的。按照在示例中编写的方式,您有两种不同类型的对象称为“tblCheese”-一种是您的对象,另一种是您的集合。当您脱离命名约定时,让我们区分它们的标准还没有实现。通常你有一个叫做“奶酪”的对象和一个叫做“奶酪”的集合
using (var context = new cheeseEntity()) {
    tblCheese cheese = new tblCheese();
    cheese.CheeseName = "TestCheese";
    cheese.CheeseGroup = 1;
    context.tblCheese.Add(cheese);
    context.SaveChanges();
}