我正在使用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 ApplicationContext())
{
context.UserInfo.Add(userInfo);
context.SaveChanges();
}
问题是,此代码未在表中插入任何新行。在保存之前我也尝试了这个,但没有运气
context.Entry<UserInfo>(userInfo).State = EntityState.Added;
context.ChangeTracker.DetectChanges();
我尝试过调试,没有异常发生。
如何使用Entity Framework将新行插入表?
答案 0 :(得分:0)
可能导致问题的可能性。
您拥有以上代码,它对我来说非常合适。我刚刚做了一个锻炼来解决这个问题。
以上几点是猜测。
请参阅此链接Entity Data Model Example&amp; One More Example Code available here
答案 1 :(得分:0)
我曾经遇到类似的问题,确定究竟是什么导致这种情况可能会很痛苦。在EF中可能导致此类行为的一个问题是具有Context对象的多个实例,这样当您在Context上调用SaveChanges时,实际上是在与添加实体的实例不同的实例上调用它(而EF未检测到实体中的任何更改,或者新实体未附加到正确的上下文,导致SaveChanges不向数据库发送任何SQL请求)。
我建议在VS中调试它(使用对象ID功能),以查看是否有多个上下文实例。使用Unit Of Work pattern together with repositories是一种更好地控制应用程序中上下文对象生命周期的方法