Just curious, will second level cache work when using the NHibernate.Linq provider or will I need to use the Criteria API to set the cacheability at the query level. This is probably more of an NH question, but since you guys are already discussing 2nd level cache I thought I might throw this one in here. Regards,
Roberto.- On Fri, Jul 31, 2009 at 11:22 AM, sbohlen <[email protected]> wrote: > > OK, issue solved; I am apparently a moron. The trouble is on my side; > we are using automapping in SOME places and explicit mapping in others > and I was making the change in (some) of the wrong places in code. > > Problem solved; sorry to have bothered eveyone with my incompetence > <g>. As soon as I attempted to reproduce my issue in a sandbox > (outside of the scope of my actual application), I verified the issue > isn't with FNH (worked fine in my sandbox, which lead me to the root > of the issue with out impl). > > Thanks, > > -Steve B. > > > On Jul 30, 5:34 pm, James Gregory <[email protected]> wrote: > > That's quite strange, how up-to-date is your copy? I was using the cache > > stuff just last week! Shouldn't make any difference but if I remember > > correctly my cache call was first in my mappings... It really shouldn't > make > > a difference but it might be worth a shot. > > > > > > > > On Thu, Jul 30, 2009 at 10:27 PM, sbohlen <[email protected]> wrote: > > > > > So debugging into the eventual ISessionFactory instance confirms that > > > the ISessionFactory.IsSecondLevelCacheEnabled property is in fact > > > 'true' and that the CacheProvider is set correctly. > > > > > But asking FNH to spit out my mappings to disk turns up that the > > > mappings for my entity don't seem to be created with the proper cache- > > > related attributes in the mapping (e.g., no <cache usage="read-only"/> > > > value). > > > > > This code.... > > > > > class MyEntity: ClassMap<MyEntiity> > > > { > > > public MyEntityMap() > > > { > > > Map(x => x.Id); > > > Map(x => x.Width); > > > Map(x => x.Height); > > > Map(x => x.Name); > > > Cache.AsReadOnly(); > > > } > > > } > > > > > ...produces this XML mapping file... > > > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default- > > > access=""> > > > <class name="MyEntity, MyAssembly, Version=1.0.0.0, Culture=neutral, > > > PublicKeyToken=null" table="MyEntity" xmlns="urn:nhibernate- > > > mapping-2.2"> > > > <id name="Id" type="Int64" column="id"> > > > <generator class="identity" /> > > > </id> > > > <property name="Width" type="Int32"> > > > <column name="width" /> > > > </property> > > > <property name="Height" type="Int32"> > > > <column name="height" /> > > > </property> > > > <property name="Name" type="String"> > > > <column name="name" /> > > > </property> > > > </class> > > > </hibernate-mapping> > > > > > ...which is obviously devoid of any cache attribute at all, explaining > > > why I don't get ant caching on my entity. Am I overlooking something > > > here in the function of Cache.AsReadOnly() or is this a bug...? > > > > > Any help appreciated. > > > > > Thx in advance, > > > > > -Steve B. > > > > > On Jul 30, 4:06 pm, sbohlen <[email protected]> wrote: > > > > I must be overlooking something (probably simple), but can anyone > > > > describe to me (or point me to a blog post or other resource) that > > > > covers how to use FNH to configure the second-level-cache properly? > > > > > > In my configuration, I'm presently doing this... > > > > > > MsSqlConfiguration.MsSql2005.ConnectonString(...) > > > > .Cache(c=>c.ProviderClass<HashtableCacheProvider>()); > > > > > > ...and in my ClassMap<T> I'm doing... > > > > > > Map(...) > > > > Cache.AsReadOnly(); > > > > > > ...which would SEEM from the docs to be all that's needed. Using > XML, > > > > I'd also have to set... > > > > > > <property name="cache.use_second_level_cache">true</property> > > > > > > ...in the hibernate.cfg.xml file but while I was somewhat expecting > to > > > > be able to say something like... > > > > > > MsSqlConfiguration.MsSql2005.ConnectonString(...) > > > > .Cache(c=>c.ProviderClass<HashtableCacheProvider>()) > > > > .Cache(x=x.UseSecondLevelCache(true)); //<--- expected line > > > > here > > > > > > ...there's no such method exposed for the Cache. In FNH, does simply > > > > setting the Cache's ProviderClass implicitly also ENABLE the second- > > > > level cache or am I missing another method that's needed to actually > > > > turn the Cache on? Didn't see anything that obvious in > > > > intellisense... > > > > > > And if nothing else is needed (e.g., my code above -- minus the extra > > > > method I seem to want to call even though it doesn't exist -- is > > > > actually correct), does anyone have any other ideas about why this > > > > collection of settings actually doesn't prevent my query for my > cached > > > > objects from hitting the DB when its invoked a second time? > > > > > > Feels like this would take perhaps 20 seconds in XML but is becoming > > > > increasingly frustrating in code :( > > > > > > Thoughts, anyone--? > > > > > > -Steve B.- Hide quoted text - > > > > - Show quoted text - > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~----------~----~----~----~------~----~------~--~---
