2009-10-01 14 views

cevap

31

Benzer bir durumu, yalnızca belirli öğeleri önbelleğe almak istediğim ve başlangıçta bir kez bu öğelerin yüklenmesini ve uygulama kapatılıncaya kadar önbellekte saklanmasını istiyorum. Bu salt okunur bir önbellektir ve ülkelerin listesini doldurmak için kullanılır, böylece bir kullanıcı ülkelerini listeden seçebilir.

ben fluentNhibernate Eşlemeleri'ni kullanılan ve

public class CountryMap : ClassMap<Country> { 
    public CountryMap() { 
     Schema("Dropdowns"); 
     Cache.ReadOnly(); 
     // Class mappings underneath 
    } 
} 

Benim kullanıcı sınıfı haritası şöyle Cache.readonly() ile Ülke sınıfımı tanımlanmış:

public class UserMap : ClassMap<User> { 
    Id(x => x.Id).Column("UserId"); 
    Map(x => x.FirstName); 
    Map(x => x.LastName); 
    References(x => x.Country) 
     .Column("CountryId"); 
} 

el Akıcı Nhibernate İkinci kullanmak yapılandırmadan seviye önbellek.

var sessionFactory = Fluently.Configure() 
    .Database (...) // set up db here 
    .Mappings(...) //set up mapping here 
    .ExposeConfiguration(c => { 
     // People advice not to use NHibernate.Cache.HashtableCacheProvider for production 
     c.SetProperty("cache.provider_class", "NHibernate.Cache.HashtableCacheProvider"); 
     c.SetProperty("cache.use_second_level_cache", "true"); 
     c.SetProperty("cache.use_query_cache", "true"); 
    }) 
    .BuildSessionFactory(); 

SQL profilcisine kontrol ettim ve bir kullanıcı için countrys bir listesini almak zaman, kez yüklenir ve ben önbellek her istekten sonra vurur olsun: Yani benim akıcı Confuguration ben var. Güzel olan şu ki, kullanıcı ülke adını görüntülerken, önbellekten yüklenir ve veritabanına bir istekte bulunmaz. Bu ilantan Gabriel Schenker tarafından bazı ipuçları aldım. Umarım yardımcı olur? Daha iyi/uygun bir yol bulursanız lütfen bana bildirin. Teşekkürler!

+0

İyi cevap! Ben de başarılı bir şekilde yaptın. Profilleme için Ayende'ın NhProf'unu tercih ediyorum, SQL profilerden çok daha iyi, ama ücretsiz değil (bir deneme var) ve NHibernate'e özgü. –

+0

Yip, NHProf'un bazı ekranlarını gördüm, iyi görünüyor. Yaşamadan önce denemeyi deneyebilir. –

+0

Şimdi nhprof kullanıyorum! bu harika bir yardım! –

İlgili konular