gpt4 book ai didi

c# - SQL Server CE、 Entity Framework 和 WinForms 之间的简单连接

转载 作者:行者123 更新时间:2023-11-30 20:48:11 25 4
gpt4 key购买 nike

我创建了一个简单的表单,其中包含两个用于姓名和年龄的文本框,以及一个用于提交的按钮。我在名为 Sample.sdf 的项目中添加了一个“本地数据库”。

我创建了一个名为 Customers 的表并添加了三列:IdNameAge .我已将 Id 列设置为主键,但没有将其设置为标识列。

然后,我添加了一个名为 SampleEntities 的“ADO.NET 实体数据模型”。我选择了“从数据库生成”并选择了 Sample.sdf。我已经选择了表格并单击了“完成”。

在我的 Button_Click 事件中我做了:

using (SampleEntities se = new SampleEntities())
{
Customer c = new Customer();
c.Id = FindNextId();
c.Age = Convert.ToDouble(txtAge.Text);
c.Name = txtAge.Text;

se.AddToCustomers(c);
se.AcceptAllChanges();
se.SaveChanges();
}
MessageBox.Show("Done");

我收到的“完成”消息没有任何问题,但记录未显示在服务器资源管理器 - 客户表 - 显示表数据 选项中。

注意:我知道在运行时,sdf 文件位于我的调试文件夹中。我检查了项目目录下的sdf文件和debug文件夹下的sdf文件,都没有任何记录。此外,我已将我的 sdf 文件属性“复制到输出目录”设置为“如果更新则复制”。

所以我的问题是,客户行在哪里?

最佳答案

问题出在您的 AcceptAllChanges 调用上。你不需要调用它;只需调用 SaveChanges

using (SampleEntities se = new SampleEntities())
{
Customer c = new Customer();
c.Id = FindNextId();
c.Age = Convert.ToDouble(txtAge.Text);
c.Name = txtAge.Text;
se.AddToCustomers(c);

se.SaveChanges();
}
MessageBox.Show("Done");

如果您调用以下之一,您只需要调用 AcceptAllChanges:

  • SaveChanges(false)
  • SaveChanges(SaveOptions.None)
  • SaveChanges(SaveOptions.DetectChangesBeforeSave)

当您调用 SaveChanges() 时(不带参数),“接受所有更改”会自动发生。

关于c# - SQL Server CE、 Entity Framework 和 WinForms 之间的简单连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24972518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com