Я перешел с фона NHibernate на Entity Framework v4.0.Когда я загружаю сущности в ObjectContext, я ожидаю, что они будут там кэшироваться, пока живет ObjectContext («кэш 1-го уровня»).Таким образом, если тот же запрос выполняется во второй раз, объекты уже находятся в ObjectContext и не должны загружаться снова.
Просмотрите этот запрос:
using (var context = new Model1Container()) {
//load entities from DB
var entities = context.Entity1Set.ToArray();
//entities should now be cached in the context (1st level cache)
//why does this call not use the cached items?
entities = context.Entity1Set.ToArray();
}
В SQLServer Profiler, я ясно вижу, что оба вызова ToArray () вызывают запрос к базе данных.Зачем второму запросу требуется обход БД, а не поведение NHibernate?
Спасибо!