例如,我有一个实体,它具有另一个实体的外键:
public entityA
{
....
[ForeignKey("State")]
public virtual int StateId { get; set; }
public virtual States State { get; set; }
....
}
IDbSet<entityA> EntitiesA;
StateId 默认初始化为 10。
我将我的上下文初始化为数据库,我总是使用相同的。使用 using 子句初始化后,我会对 EntitiesA 集合中的某些实体进行一些更改(即将 StateId 设置为 20),但我不会使用 context.SaveChanges() 对数据库进行更改,因为此时我不想要。
修改一些实体后,我在我的应用程序中达到了一个点,我执行以下操作:
IQueryable<EntityA> entities =
context.EntitiesA.Where(e => e.StateId == 10);
foreach (EntityA _currentEntity in entities)
{
....
}
此时,由于我尚未对数据库执行保存更改,因此数据库中的实体继续将其状态设为 10(而不是修改后的 20),因此满足条件 e.StateId == 10 但实体包含 StateId 为 20 的项目,所以我不明白这个……
期望的行为是条件 e.StateId 不满足那些先前已修改为 20 的实体以及仅包含那些 stateid 仍为 10(未修改)的项目的实体。
有任何想法吗?似乎查询是针对数据库启动的,实际上结果是从内存中获取的......