У меня очень маленькая таблица (10 строк) клиентов.
public class Customer
{
/// <summary>
/// auto-increment
/// </summary>
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual bool IsConfirmed { get; set; }
}
Это мое беглое отображение NHibernate:
public class CustomerMapping : ClassMap<Customer>
{
public CustomerMapping()
{
Table("CUSTOMERS");
Id(a => a.ID, "ID").GeneratedBy.Increment();
Map(a => a.Name, "NAME").Unique().Not.Nullable();
Map(a => a.IsConfirmed, "IS_CONFIRMED").Nullable();
}
}
Я запускаю эту строку кода пять раз в цикле:
session.QueryOver<Customer>().Where(a => a.Name == customerName).SingleOrDefault();
Производительность этого запроса почему-то ухудшается с каждым вызовом.
1 ... 129 ms
2 ... 21120 ms
3 ... 21105 ms
4 ... 21220 ms
5 ... 42006 ms
Почему это происходит? Почему первый звонок такой быстрый, а все остальные такие медленные? Что-то не так с кэшированием NHibernate?