Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架保存不工作_C#_Entity Framework - Fatal编程技术网

C# 实体框架保存不工作

C# 实体框架保存不工作,c#,entity-framework,C#,Entity Framework,我正在使用实体框架在SQLite数据库文件中保存一些数据 这是我在DB文件中的表 ID Name Username Pwd ID为自动递增,其余列为Text类型 以下是我将数据保存到数据库中的方式: UserInfo userInfo=new UserInfo(); userInfo.Name="abc"; userInfo.Username="xyz"; userInfo.Pwd="123456"; using (var context = new ApplicationCo

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

这是我在DB文件中的表

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();
context.Entry(userInfo.State=EntityState.Added;
context.ChangeTracker.DetectChanges();
我尝试过调试,没有出现异常


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

可能导致问题的可能性

  • 右键单击实体数据模型并从数据库更新模型。以确保您已更新到最后一次更改
  • 确保查看的是正确的数据库和表。每个人偶尔都会犯这样的错误
  • 确保使用的是有效的连接字符串。指向正确的数据库。确保它不是旧数据库/其他备份数据库
  • 确保您使用的是最新的适当实体
  • 上面的代码你有,它完美的工作,我很好。我只是做了一个锻炼来解决这个问题

    以上几点都是猜测


    请参阅此链接&

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


    我建议在VS中调试它(使用对象id特性)为了查看是否有多个上下文实例。使用是更好地控制应用程序中上下文对象的生存期的一种方法

    连接字符串?您的逻辑很好,我的第一个猜测是您的连接字符串有点古怪!它是否都包装在try/catch块中,并且您可能忽略了错误?Connecti在字符串上,它可以检索现有数据,但不能saving@DavidG是的,它包装在try/catch中。那么,您的catch中是否有任何错误?我找不到AddObject()仍然没有获得InsertonSubmit()。谢谢,我如何使用对象id功能进行调试?如果您有不同的实例,则在VS的监视栏中会有不同的id