I've got a problem with batch-size in nHibernate(C# - VS 2012). I set "batch-size" in the collection and in the config, but it doesn't work.
using (var s = OpenSession()) { using (var t = s.BeginTransaction()) { Parent parent = s.CreateCriteria(typeof(Parent)).List<Parent>().First(); Console.Write(parent.Children[0]); t.Commit(); } }
nHibernate profiler shows that it takes all children at once (for example 1000 children), but it should take only 5.
Parent.hbm.xml:
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="L6.Model" assembly="L6"> <class name="Parent"> <id name="ParentId"> <generator class="native" /> </id> <bag name="Children" batch-size="5"> <key column="ID_Parent"/> <one-to-many class="Child"/> </bag> </class> </hibernate-mapping>
Child.hbm.xml:
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="L6.Model" assembly="L6"> <class name="Child"> <id name="ChildId"> <generator class="native" /> </id> <many-to-one name="Parent" column="ID_Parent" class="Parent" /> </class> </hibernate-mapping>
hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?> <!-- This template was written to work with NHibernate.Test. Copy the template to your NHibernate.Test project folder and rename it in hibernate.cfg.xml and change it for your own use before compile tests in VisualStudio. --> <!-- This is the System.Data.dll provider for SQL Server --> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> <property name="connection.connection_string"> Server=.;initial catalog=Lista6;Integrated Security=SSPI </property> <property name="adonet.batch_size">5</property> <property name="show_sql">true</property> <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property> <property name="command_timeout">60</property> <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> <property name="generate_statistics">true</property> <mapping file="Child.hbm.xml" /> <mapping file="Parent.hbm.xml" /> </session-factory> </hibernate-configuration>
Do you have any ideas why batch-size doesn't work?