我有兩個實體有一對多的關係,這些是用戶和地址。一個用戶可以有很多地址。我爲每個HTTP請求模式使用一個會話和事務,並啓用了1級緩存。出於某種原因,我看到我的懶加載的集合沒有處理對數據所做的更改。例如,如果我創建一個用戶對象。然後,我創建了兩個地址對象,做斷言我期待用戶對象延遲加載兩個地址時節省他們像NHibernate緩存故障
User u1 = CreateNewUser("[email protected]", "[email protected]");
u1.Save();
Address a1 = CreateNewAddress(u1, "[email protected]", "Old1", "User1");
a1.Save();
Address a2 = CreateNewAddress(u1, "[email protected]", "Old1", "User1");
a2.Save();
Session.Flush();
Assert.AreEqual(2, u1.Addresses.Count); // THIS IS FAILING BECAUSE COUNT IS 0
現在和計數應該是2,但它返回0。如果我只是做扔掉完整緩存Session.Clear()調用也不起作用。但是,如果我通過執行Session.Clear()來拋棄完整緩存,然後以這種方式再次加載我的用戶對象,它將按預期工作。我不知道我是否錯過了一些東西,或者在NHibernate緩存設置配置中還是缺少一些東西。任何幫助將不勝感激。
感謝
嗯,我是新來的NHibernate但我認爲這是假設由NHibernate的工作要做。我認爲在同一個會話中,NHibernate會跟蹤所有更改並通知相關的項目。情況並非如此。 – Leadfoot
呃...我假設你的User類有一個地址列表。如果您希望Count()爲2,那麼您需要添加到該列表中.NH不會爲您執行此操作,除非您再次從DB重新加載對象。 – Todd