Sta*_*Cub 16 entity-framework entity-framework-4
在EntityFramework中,是否可以在调用SaveChanges方法之前使用AddObject查询刚刚添加到上下文中的对象?
谢谢
Ari*_*ini 28
要保持实体,您通常会DbSet在上下文中将其添加到实体中.
例如
var bar = new Bar();
bar.Name = "foo";
var context = new Context();
context.Bars.Add(bar);
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,查询context.Bars,无法找到刚刚添加的实体
var howMany = context.Bars.Count(b => b.Name == "foo");
// howMany == 0
Run Code Online (Sandbox Code Playgroud)
在context.SaveChanges()同一行之后会产生1
该DbSet直到他们的分贝坚持似乎察觉到的变化.
幸运的是,每个属性都有DbSet自己的Local属性DbSet,但它反映了所有内存中的操作
var howMany = context.Bars.Local.Count(b => b.Name == "foo");
// howMany == 1
Run Code Online (Sandbox Code Playgroud)
您还可以使用Local添加实体
context.Bars.Local.Add(bar);
Run Code Online (Sandbox Code Playgroud)
并摆脱实体框架的奇怪行为.
Jay*_*ena 10
你可以查询这样的对象,
context.ObjectStateManager.GetObjectStateEntries(EntityState.Added).Select(obj => obj.Entity).OfType<TheEntityType>()
Run Code Online (Sandbox Code Playgroud)
这将查询处于添加状态的对象.如果你也想要其他状态,你可以将所有其他状态传递给这样的GetObjectStateEntries方法.
GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Unchanged)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6502 次 |
| 最近记录: |