That is a pretty common error.NH will only update the cache on transaction
commit (to ensure consistency between cache & DB
On Fri, Nov 7, 2008 at 7:39 PM, Gabriel Schenker <[EMAIL PROTECTED]>wrote:
> ok. that did it. Thanks. I forgot to commit the transaction in my test
> setup where I generated the test data. mea culpa!
> the code used in the setup looks like this now
>
> blog = new Blog{ Author = "Gabriel", Name = "Keep on running"};
> blog.Posts.Add(new Post{Title = "First post", Body = "Some
> text"});
> blog.Posts.Add(new Post { Title = "Second post", Body = "Some
> other text" });
> blog.Posts.Add(new Post { Title = "Third post", Body = "Third
> post text" });
> using (var session = SessionFactory.OpenSession())
> using(var tx = session.BeginTransaction())
> {
> session.Save(blog);
> tx.Commit();
>
> }
>
>
> On Fri, Nov 7, 2008 at 6:33 PM, Ayende Rahien <[EMAIL PROTECTED]> wrote:
>
>> Try to commit the transaction
>>
>> On Fri, Nov 7, 2008 at 7:30 PM, Gabriel Schenker <[EMAIL PROTECTED]>wrote:
>>
>>> some thing like this (I added the Console.WriteLine for debugging
>>> purposes)
>>>
>>> [Test]
>>> public void try_load_blog_with_posts()
>>> {
>>> Console.WriteLine(">>>>First load...");
>>> using (var session = SessionFactory.OpenSession())
>>> {
>>> var blog1 = session.Get<Blog>(blog.Id);
>>> Console.WriteLine(">>>>>>>>Iterating posts...");
>>> foreach (var post in blog1.Posts)
>>> Console.WriteLine("{0} - {1}", post.Id, post.Title);
>>> }
>>> Console.WriteLine(">>>>Second load...");
>>> using(var session = SessionFactory.OpenSession())
>>> {
>>> var blog2 = session.Get<Blog>(blog.Id);
>>> Console.WriteLine(">>>>>>>>Iterating posts...");
>>> foreach (var post in blog2.Posts)
>>> Console.WriteLine(post.Id);
>>> }
>>> }
>>>
>>> here is the implementation of Blog
>>>
>>> public class Blog
>>> {
>>> public virtual int Id { get; set; }
>>> public virtual string Author { get; set; }
>>> public virtual string Name { get; set; }
>>> public virtual ISet<Post> Posts { get; set; }
>>>
>>> public Blog()
>>> {
>>> Posts = new HashedSet<Post>();
>>> }
>>> }
>>>
>>> and of Post
>>>
>>> public class Post
>>> {
>>> public virtual int Id { get; private set; }
>>> public virtual string Title { get; set; }
>>> public virtual string Body { get; set; }
>>>
>>> }
>>>
>>> On Fri, Nov 7, 2008 at 6:24 PM, Ayende Rahien <[EMAIL PROTECTED]> wrote:
>>>
>>>> What is the code that you are using?
>>>>
>>>>
>>>> On Fri, Nov 7, 2008 at 7:21 PM, Gabriel Schenker <[EMAIL PROTECTED]>wrote:
>>>>
>>>>>
>>>>> I try to cache an aggregate consisting of a root object and a
>>>>> collection of children in the second level cache. I manage to cache
>>>>> the root entity in the cache but the child collection does not seem to
>>>>> bee cached. In the mapping file(s) I explicitly add the <cache>
>>>>> element to the collection and the child element and the config file
>>>>> contains the necessary entries to enable 2nd level caching.
>>>>> What am I missing?
>>>>>
>>>>> My config file (using sql server compact edition and the Hashtable
>>>>> Cache Provider [for testing purposes only])
>>>>>
>>>>> <?xml version="1.0" encoding="utf-8" ?>
>>>>> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
>>>>> <session-factory>
>>>>> <property
>>>>>
>>>>> name="connection.provider">NHibernate.Connection.DriverConnectionProvider</
>>>>> property>
>>>>> <property name="dialect">NHibernate.Dialect.MsSqlCeDialect</
>>>>> property>
>>>>> <property
>>>>> name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</
>>>>> property>
>>>>> <property name="connection.connection_string">Data
>>>>> Source=CachingSample.sdf</property>
>>>>> <property name="use_outer_join" >true</property>
>>>>>
>>>>> <property
>>>>> name="cache.provider_class">NHibernate.Cache.HashtableCacheProvider</
>>>>> property>
>>>>> <property name="cache.use_second_level_cache">true</property>
>>>>>
>>>>> <property name="show_sql">true</property>
>>>>> </session-factory>
>>>>> </hibernate-configuration>
>>>>>
>>>>> the mapping file for my aggregate (the usual sample Blog-->Posts)
>>>>>
>>>>> <?xml version="1.0" encoding="utf-8" ?>
>>>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
>>>>> namespace="Caching"
>>>>> assembly="Caching">
>>>>> <class name="Blog">
>>>>> <cache usage="read-write"/>
>>>>> <id name="Id">
>>>>> <generator class="hilo"/>
>>>>> </id>
>>>>> <property name="Author"/>
>>>>> <property name="Name"/>
>>>>> <set name="Posts" cascade="all" lazy="true">
>>>>> <cache usage="read-write"/>
>>>>> <key column="BlogId"/>
>>>>> <one-to-many class="Post"/>
>>>>> </set>
>>>>> </class>
>>>>>
>>>>> <class name="Post">
>>>>> <cache usage="read-write"/>
>>>>> <id name="Id">
>>>>> <generator class="hilo"/>
>>>>> </id>
>>>>> <property name="Title"/>
>>>>> <property name="Body"/>
>>>>> </class>
>>>>> </hibernate-mapping>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Dr. Gabriel Schenker
>>> Apprimus Informatik GmbH
>>> In der Gass 19
>>> CH-8627 GrĂ¼ningen
>>>
>>> http://www.apprimus.ch
>>> [EMAIL PROTECTED]
>>>
>>>
>>>
>>>
>>
>>
>>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"nhusers" 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/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---