public void QueuedBagAdds() { ISession s = OpenSession(); Assignable a = new Assignable(); a.Id = "foo"; a.Categories = new ArrayList(); Category c = new Category(); c.Assignable = a; a.Categories.Add(c); s.Save(a); s.Flush(); s.Close(); sessions.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(); sessions.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(); sessions.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(); }
public void MixNativeAssigned() { // if HSQLDialect then skip test ISession s = OpenSession(); Category c = new Category(); c.Name = "NAME"; Assignable assn = new Assignable(); assn.Id = "i.d."; IList l = new ArrayList(); l.Add(c); assn.Categories = l; c.Assignable = assn; s.Save(assn); s.Flush(); s.Close(); s = OpenSession(); s.Delete(assn); s.Flush(); s.Close(); }
public void NamedSQLQuery() { if( dialect is Dialect.MySQLDialect ) { return; } ISession s = OpenSession(); Category c = new Category(); c.Name = "NAME"; Assignable assn = new Assignable(); assn.Id = "i.d."; IList l = new ArrayList(); l.Add( c ); assn.Categories = l; c.Assignable = assn; s.Save( assn ); s.Flush(); s.Close(); s = OpenSession(); IQuery q = s.GetNamedQuery( "namedsql" ); Assert.IsNotNull( q, "should have found 'namedsql'" ); IList list = q.List(); Assert.IsNotNull( list, "executing query returns list" ); object[] values = list[0] as object[]; Assert.IsNotNull( values[0], "index 0 should not be null" ); Assert.IsNotNull( values[1], "index 1 should not be null" ); Assert.AreEqual( typeof(Category), values[0].GetType(), "should be a Category" ); Assert.AreEqual( typeof(Assignable), values[1].GetType(), "should be Assignable" ); s.Delete( "from Category" ); s.Delete( "from Assignable" ); s.Flush(); s.Close(); }
public void FindBySQLParameters() { ISession s = OpenSession(); Category c = new Category(); c.Name = "Good"; Assignable assn = new Assignable(); assn.Id = "i.d."; IList l = new ArrayList(); l.Add(c); assn.Categories = l; c.Assignable = assn; s.Save(assn); s.Flush(); c = new Category(); c.Name = "Best"; assn = new Assignable(); assn.Id = "i.d.2"; l = new ArrayList(); l.Add(c); assn.Categories = l; c.Assignable = assn; s.Save(assn); s.Flush(); c = new Category(); c.Name = "Better"; assn = new Assignable(); assn.Id = "i.d.7"; l = new ArrayList(); l.Add(c); assn.Categories = l; c.Assignable = assn; s.Save(assn); s.Flush(); assn = new Assignable(); assn.Id = "i.d.3"; s.Save(assn); s.Flush(); s.Close(); s = OpenSession(); IQuery basicParam = s.CreateSQLQuery("select {category.*} from Category {category} where {category}.Name = 'Best'", "category", typeof( Category )); IList list = basicParam.List(); Assert.AreEqual(1, list.Count); IQuery unnamedParam = s.CreateSQLQuery("select {category.*} from Category {category} where {category}.Name = ? or {category}.Name = ?", "category", typeof( Category )); unnamedParam.SetString(0, "Good"); unnamedParam.SetString(1, "Best"); list = unnamedParam.List(); Assert.AreEqual(2, list.Count); IQuery namedParam = s.CreateSQLQuery("select {category.*} from Category {category} where ({category}.Name=:firstCat or {category}.Name=:secondCat)", "category", typeof( Category )); namedParam.SetString("firstCat", "Better"); namedParam.SetString("secondCat", "Best"); list = namedParam.List(); Assert.AreEqual(2, list.Count); s.Delete("from Assignable"); s.Delete("from Category"); s.Flush(); s.Close(); }
public void FindBySQLMultipleObject() { ISession s = OpenSession(); Category c = new Category(); c.Name = "NAME"; Assignable assn = new Assignable(); assn.Id = "i.d."; IList l = new ArrayList(); l.Add( c ); assn.Categories = l; c.Assignable = assn; s.Save( assn ); s.Flush(); c = new Category(); c.Name = "NAME2"; assn = new Assignable(); assn.Id = "i.d.2"; l = new ArrayList(); l.Add( c ); assn.Categories = l; c.Assignable = assn; s.Save( assn ); s.Flush(); assn = new Assignable(); assn.Id = "i.d.3"; s.Save( assn ); s.Flush(); s.Close(); s = OpenSession(); if ( !(dialect is Dialect.MySQLDialect) ) { IList list = s.CreateSQLQuery( "select {category.*}, {assignable.*} from Category {category}, \"assign able\" {assignable}", new string[] { "category", "assignable" }, new System.Type[] { typeof( Category ), typeof( Assignable ) } ).List(); Assert.AreEqual( 6, list.Count, "Count differs" ); // cross-product of 2 categories x 3 assignables; Assert.IsTrue( list[0] is object[] ); } s.Delete( "from Assignable" ); s.Delete( "from Category" ); s.Flush(); s.Close(); }
public void FindBySQLAssociatedObject() { ISession s = OpenSession(); Category c = new Category(); c.Name = "NAME"; Assignable assn = new Assignable(); assn.Id = "i.d."; IList l = new ArrayList(); l.Add( c ); assn.Categories = l; c.Assignable = assn; s.Save( assn ); s.Flush(); s.Close(); s = OpenSession(); IList list = s.CreateSQLQuery( "select {category.*} from Category {category}", "category", typeof( Category ) ).List(); Assert.AreEqual( 1, list.Count, "Count differs" ); s.Delete( "from Assignable" ); s.Delete( "from Category" ); s.Flush(); s.Close(); }
public void FindBySQLMultipleObject() { ISession s = OpenSession(); Category c = new Category(); c.Name = "NAME"; Assignable assn = new Assignable(); assn.Id = "i.d."; assn.Categories = new List<Category> {c}; c.Assignable = assn; s.Save(assn); s.Flush(); c = new Category(); c.Name = "NAME2"; assn = new Assignable(); assn.Id = "i.d.2"; assn.Categories = new List<Category> { c }; c.Assignable = assn; s.Save(assn); s.Flush(); assn = new Assignable(); assn.Id = "i.d.3"; s.Save(assn); s.Flush(); s.Close(); s = OpenSession(); if (!(Dialect is MySQLDialect)) { IList list = s.CreateSQLQuery("select {category.*}, {assignable.*} from Category {category}, \"assign able\" {assignable}") .AddEntity("category", typeof(Category)) .AddEntity("assignable", typeof(Assignable)) .List(); Assert.AreEqual(6, list.Count, "Count differs"); // cross-product of 2 categories x 3 assignables; Assert.IsTrue(list[0] is object[]); } s.Delete("from Assignable"); s.Delete("from Category"); s.Flush(); s.Close(); }