调用ObjectContext.SaveChanges()后,数据库更改不会持续
本文关键字:数据库 SaveChanges ObjectContext 调用 | 更新日期: 2023-09-27 18:25:47
我正在尝试使用实体框架将记录插入表中。我制作了我的数据库(mdf文件),从数据库中制作了一个模型(edmx),现在我正试图插入一条记录。
Users Brad = new Users
{
UserInitials="BCH",
UserName="Brad"
};
using (WeighProgramDatabaseEntities wDB = new WeighProgramDatabaseEntities())
{
wDB.Users.AddObject(Brad);
int res = wDB.SaveChanges(System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave);
List<Users> lwt = wDB.Users.ToList(); //call to look at the inserted data
}
当我按照这个程序操作时,似乎一切都很好。我的wDB.Users.ToList();
返回一条记录,这就是我刚刚插入的记录。但是,如果我再次运行我的代码,删除插入内容并只调用查询(只留下)List<Users> lwt = wDB.Users.ToList();
,我的查询将不会返回任何记录。我应该做些什么不同的事情才能让我的改变持续下去?为什么我的唱片"消失了"?
CCD_ 3继承自CCD_。
这是我第一次尝试使用EF的东西,所以我的一些措辞可能不正确,我可能没有包含重要的内容——让我知道。
编辑:
我认为我的问题是我的Insert/Update/Delete函数没有映射。但我不知道如何创建一个存储过程,让他们映射到…
第2版:
好的,我搞清楚了存储过程映射。现在我已经映射了一个INSERT,并且我调用了AddObject
,它实际上将被插入。
比我预想的要复杂一点。例如,如果我在数据库资源管理器中右键单击一个表并选择"新建查询",它将带我进入一个很棒的查询设计器窗口,让我创建插入、选择、更新。。。但是没有保存按钮!外面是灰色的。我需要从另一个路由写入它们。不允许我通过GUI生成插入/删除/更新。我想这没关系,因为它们不是很多文本,但仍然有点麻烦。
我认为ConnectionString
指向解决方案的Debug/Release文件夹中的mdf,并且该文件可能在每次构建应用程序时都会被覆盖,这就是为什么您认为更改没有持久化的原因。尝试将ConnectionString
设置为指向项目文件夹中的mdf(项目实际引用的mdf)。
您还可以将"Copy to output directory"文件属性设置为"Copy if later",而不是"Copy always"。如果更新项目中数据库的架构,则它会比调试目录中的数据库文件更新,并且在编译时会被覆盖。