实体框架保存不起作用

本文关键字:不起作用 保存 框架 实体 | 更新日期: 2023-09-27 18:29:28

我正在使用实体框架将一些数据保存在SQLite数据库文件中。

这是我在数据库文件中的表

ID  Name    Username    Pwd

ID为自动递增,其余列为Text

这就是我将数据保存到数据库中的方式:

UserInfo userInfo=new UserInfo();
userInfo.Name="abc";
userInfo.Username="xyz";
userInfo.Pwd="123456";
using (var context = new ApplicationContext())
{
    context.UserInfo.Add(userInfo);                
    context.SaveChanges();
}

问题是,这段代码没有向表中插入任何新行。我在保存之前也尝试过这个,但没有运气

context.Entry<UserInfo>(userInfo).State = EntityState.Added;
context.ChangeTracker.DetectChanges();

我尝试了调试,但没有出现异常。

如何使用实体框架将新行插入表中?

实体框架保存不起作用

可能导致问题的可能性。

  1. 右键单击实体数据模型并从数据库更新模型。确保您已更新到上次更改
  2. 请确保查看的是正确的数据库和表。每个人都会偶尔犯这样的错误
  3. 请确保使用的是有效的连接字符串。指向正确的数据库。请确保它不是旧数据库/其他备份数据库
  4. 确保您使用的是最新的正确实体

你上面的代码,对我来说非常好用。我只是做了一个锻炼来解决这个问题。

以上几点都是猜测。

请参阅此链接实体数据模型示例&此处提供的另一个示例代码

我曾经遇到过类似的问题,很难确定到底是什么原因导致了这种情况。在EF中可能导致这种行为的一个问题是具有Context对象的多个实例,使得当您在Context上调用SaveChanges时,您实际上是在与添加实体的实例不同的实例上调用它(EF没有检测到实体中的任何更改,或者新实体没有附加到正确的上下文,导致SaveChanges不会向数据库发送任何SQL请求)。

我建议在VS中调试它(使用对象id功能),以查看您是否有多个上下文实例。将工作单元模式与存储库一起使用是一种更好地控制应用程序中上下文对象生存期的方法