在实体框架中,是否可以在调用 SaveChanges 方法之前查询刚刚使用“添加对象”添加到上下文的对象?
Thanks
要持久化一个实体,您通常将其添加到它的DbSet
在上下文中。
例如
var bar = new Bar();
bar.Name = "foo";
var context = new Context();
context.Bars.Add(bar);
令人惊讶的是,查询context.Bars
,找不到刚刚添加的实体
var howMany = context.Bars.Count(b => b.Name == "foo");
// howMany == 0
After context.SaveChanges()
将会产生相同的结果1
The DbSet
似乎不知道更改,直到它们保留在数据库上。
幸运的是,每个DbSet
has a Local https://learn.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.dbset-1.local?view=efcore-2.1属性的作用类似于DbSet
本身,但它反映了所有内存中的操作
var howMany = context.Bars.Local.Count(b => b.Name == "foo");
// howMany == 1
您还可以使用Local
添加实体
context.Bars.Local.Add(bar);
并摆脱实体框架的奇怪行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)