protected override void OnSetUp() { // Clear cache at each test. RebuildSessionFactory(); using (ISession session = OpenSession()) using (ITransaction tx = session.BeginTransaction()) { Item item = new Item(); item.Id = 1; session.Save(item); for (int i = 0; i < 4; i++) { Item child = new Item(); child.Id = i + 2; child.Parent = item; session.Save(child); item.Children.Add(child); } for (int i = 0; i < 5; i++) { AnotherItem obj = new AnotherItem("Item #" + i); obj.Id = i + 1; session.Save(obj); } tx.Commit(); } Sfi.Evict(typeof(Item)); Sfi.EvictCollection(typeof(Item).FullName + ".Children"); }
protected void ClearCollectionCache <T>(Expression <Func <T, IEnumerable> > pathToCollection) { var rootEntityTypeFullPath = typeof(T).FullName; var memberExpression = pathToCollection.Body as MemberExpression; if (memberExpression == null) { throw new ArgumentException("pathToCollection should be member expression"); } var role = $"{rootEntityTypeFullPath}.{memberExpression.Member.Name}"; Sfi.EvictCollection(role); }
public void QueuedBagAdds() { ISession s = OpenSession(); Assignable a = new Assignable(); a.Id = "foo"; a.Categories = new List <Category>(); Category c = new Category(); c.Assignable = a; a.Categories.Add(c); s.Save(a); s.Flush(); s.Close(); Sfi.EvictCollection("NHibernate.DomainModel.Assignable.Categories"); s = OpenSession(); a = (Assignable)s.Get(typeof(Assignable), "foo"); c = new Category(); c.Assignable = a; a.Categories.Add(c); Assert.IsFalse(NHibernateUtil.IsInitialized(a.Categories)); Assert.AreEqual(2, a.Categories.Count); s.Flush(); s.Close(); Sfi.EvictCollection("NHibernate.DomainModel.Assignable.Categories"); s = OpenSession(); a = (Assignable)s.Get(typeof(Assignable), "foo"); c = new Category(); c.Assignable = a; a.Categories.Add(c); Assert.IsFalse(NHibernateUtil.IsInitialized(a.Categories)); s.Flush(); Assert.IsFalse(NHibernateUtil.IsInitialized(a.Categories)); Assert.AreEqual(3, a.Categories.Count); s.Close(); Sfi.EvictCollection("NHibernate.DomainModel.Assignable.Categories"); s = OpenSession(); a = (Assignable)s.Get(typeof(Assignable), "foo"); Assert.AreEqual(3, a.Categories.Count); s.Delete(a); s.Flush(); s.Close(); }