var db=new UserDbContext() var A=db.where(x=>x.uname="tom").FirstOrDefault().Age; //显示13 然后我在数据库更改下tom的年龄,改为15,再执行 var B=db.where(x=>x.uname="tom").FirstOrDefault().Age; //依然显示13 这是为什么啊?不是用Find才是本地找数据吗?现在变成了什么都缓存了? 然而更奇怪的是,第二条FirstOrDefault我用sql-Profile看到EF的确是请求了数据库 但是返回实体的信息依然是旧的。
你新建一个DB就会看到新的数据了,要不然你就不要用Entity Framework算了。
新建DB能解决问题我是知道,只是想明白为什么会这样
FirstOrDefault()
Find()
如果是这样,这两个函数就没区别了啊,都是查找本地缓存了
EF是有缓存的,上下文里有缓存,
我印象中如果是用find()才走缓存的啊,其他都是走数据库