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()时才有效。

我做错了什么,为什么不这样做?

EF DbContext:插入记录到表(没有SaveChanges()),为什么可以';Don’别对此表示怀疑

尝试查询本地对象

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(),因此查询不会返回您的实体。