Frameworks 实体框架数据库集找不到添加的实体

Frameworks 实体框架数据库集找不到添加的实体,frameworks,entity,dbset,Frameworks,Entity,Dbset,我遇到了一个问题,即当向ObjectContext的数据库集添加一个新实体时,为什么找不到该实体会再次查找它 using (var db = new SmartrailDB()) { var cart01 = db.Carts.SingleOrDefault(x => x.Number == 0); if (cart01 == null) { cart01 = new C

我遇到了一个问题,即当向ObjectContext的数据库集添加一个新实体时,为什么找不到该实体会再次查找它

using (var db = new SmartrailDB())
        {
            var cart01 = db.Carts.SingleOrDefault(x => x.Number == 0);
            if (cart01 == null)
            {
                cart01 = new Cart { Number = 0 };
                db.Carts.Add(cart01);

            }
            var cart02 = db.Carts.SingleOrDefault(x => x.Number == 0); // Should find the cart I just added - right?
            Assert.IsNotNull(cart02); // Fails because cart02 does not exist in the db.Carts collection
        }
有人能告诉我我做错了什么吗


这里也是周五晚些时候,所以大脑现在处于半睡眠状态。

在尝试访问实体之前,您必须更新您的上下文。只要做:


db.SaveChanges()紧接着
db.Cart.Add(cart01)

在尝试访问实体之前,必须更新上下文。只要做:


db.SaveChanges()紧接着
db.Cart.Add(cart01)

我不能这样做,因为交易尚未完成。创建的实体可能会被构成交易一部分的后续记录使用,这就是我有此需求的原因。现在,我在Context.Carts.Local中首先查找新实体,然后查找普通查询。讨厌双重工作,因为它感觉像是一种变通。如果你在更新2万行呢。你会一次保存所有内容,并在半小时内关闭网站,还是在每个实体更改后保存。你应该保存它,然后继续你正在做的任何事情。与我的问题无关,但无论如何-我知道如何处理它。每个事务在几个表中产生大约50到70条记录。我不能这样做,因为事务还没有完成。创建的实体可能会被构成交易一部分的后续记录使用,这就是我有此需求的原因。现在,我在Context.Carts.Local中首先查找新实体,然后查找普通查询。讨厌双重工作,因为它感觉像是一种变通。如果你在更新2万行呢。你会一次保存所有内容,并在半小时内关闭网站,还是在每个实体更改后保存。你应该保存它,然后继续你正在做的任何事情。与我的问题无关,但无论如何-我知道如何处理它。每个事务在几个表中产生大约50到70条记录。有关更多详细信息,请参阅的答案。DbSet类始终查询数据库,而不是本地存储。有关更多详细信息,请参阅的答案。