I have enabled 2nd level cache in FluentNHibernate:

Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2005
            .ConnectionString(connectionString)
            .Cache(c => c.ProviderClass<SysCacheProvider>().UseQueryCache())
            )
            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<PersonMap>());

My mapping is as follows:

    public PersonMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);
        Cache.ReadWrite();
    }

When I call Persons from my repository, I run:
    var query = session.GetSession().CreateCriteria<Person>("p")
        .Add(Expression.Eq("p.Org.Id", orgRep.GetOrg().Id));
    query.SetCacheable(true);
    return query.List<Person>().AsQueryable<Person>();

When I start the application everything (including cache) works fine. My 
first query will hit the database, but following ones don't. Problem arises 
when I save the Person. Person is saved like:

public virtual void Save(Person p)
{
if (p.Id > 0 && session.GetSession().Get<Person>(p.Id).Org != 
orgRep.GetOrg())
            throw new SecurityException("Organization mismatch");
  
        using (var tr = session.GetSession().BeginTransaction())
{  
session.GetSession().Merge(p);
session.GetSession().Flush();
tr.Commit();
}
}
Saving works but after that the cache doesn't. Queries will always hit the 
database. Looking through nhibernate log says that:

 DEBUG - Checking query spaces for up-to-dateness [[Person]]
 DEBUG - Fetching object 
'NHibernate-Cache:UpdateTimestampsCache:[Person]@1639794674' from the cache.
 DEBUG - cached query results were not up to date for: sql: SELECT this_.Id 
as Id0_0_, this_.Name as Name0_0_, this_.Org_id as Org5_0_0_ FROM [Person] 
this_ WHERE this_.Org_id = ?; parameters: ['1']; first row: 0
 
What am I doing wrong?

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to