【问题标题】:Entity Framework dbset not finding added entity实体框架 dbset 未找到添加的实体
【发布时间】:2013-05-10 22:40:43
【问题描述】:

我无法理解为什么在将新实体添加到 ObjectContext 的 DbSet 时,找不到该实体会再次查找它。

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
        }

有人能告诉我我在这里做错了什么吗?

这里周五也很晚,所以现在大脑半睡半醒。

【问题讨论】:

  • DbSet 类始终查询数据库,而不是本地存储。更多详情请查看this question的回复。

标签: frameworks entity dbset


【解决方案1】:

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

db.SaveChanges(); 紧跟在db.Cart.Add(cart01); 之后

【讨论】:

  • 我不能这样做,因为交易没有完成。创建的实体可能会被构成交易一部分的后续记录使用,这就是我有这个需求的原因。现在我首先在 Context.Carts.Local 中寻找新实体,然后是普通查询。讨厌双重工作,因为这感觉像是一种解决方法。
  • 如果您要更新 2 万行会怎样。您会一次保存所有内容并杀死您的网站半小时,还是在每个实体更改后保存它。你应该保存它,然后继续你正在做的任何事情。
  • 与我的问题无关,但无论如何 - 我知道如何处理。每个事务在几个表中产生大约 50 到 70 条记录。
猜你喜欢
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
  • 2013-04-10
  • 2021-12-30
  • 1970-01-01
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多