EF DbContext:插入记录到表(没有SaveChanges()),为什么可以';Don’别对此表示怀疑
本文关键字:Don 表示 怀疑 为什么 记录 插入 DbContext EF SaveChanges 没有 | 更新日期: 2023-09-27 18:26:43
我有这样的代码
var context = new MyDbContext(); // db context generated from database
var id = Guid.NewGuid();
var cust = new customer()
{ Id = id, Name = "John" };
context.Customers.Add(cust);
// context.SaveChanges();
var res = context.Customers.Where(c => c.Id == id);
MessageBox.Show(res.Count().ToString());
我在表中插入了一条记录,当我运行查询时,我希望结果包含这个新记录。但事实并非如此。它只有在我之前进行SaveChanges()时才有效。
我做错了什么,为什么不这样做?
尝试查询本地对象
http://msdn.microsoft.com/en-us/library/gg696248(v=vs.103).aspx
context.Customers.Local.yourqueryhere
这将查询上下文跟踪的实体,包括尚未保存的实体。
因为var res = context.Customers.Where(c => c.Id == id);
从数据库中读取。
context.Customers.Add(cust);
仅在上下文中添加记录(更新EF上下文中的对象图),context.SaveChanges();
将其保存到数据库中。
您没有插入记录。您刚刚将其添加到本地框的上下文中。.SaveChanges()
将您的本地数据保存到数据库中。由于查询总是针对数据库运行,并且您没有调用.SaveChanges()
,因此查询不会返回您的实体。