我在 nHibernate(C# - VS 2012)中遇到了批量大小的问题。我在集合和配置中设置了“批量大小”,但它不起作用。
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 分析器显示它一次获取所有孩子(例如 1000 个孩子),但它应该只需要 5 个。
父.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>
休眠.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>
你知道为什么批量大小不起作用吗?