gpt4 book ai didi

nhibernate - 无法使用 NHibernate 批量插入

转载 作者:行者123 更新时间:2023-12-03 12:33:48 24 4
gpt4 key购买 nike

我已尝试向我的应用程序添加批量插入,但 Batcher 仍然是 BatchSize 为 1 的 NonBatchingBatcher。

这是使用 C#3、NH3RC1 和 MySql 5.1

我已将其添加到我的 SessionFactory

<property name="adonet.batch_size">100</property>

我的代码很像这样

var session = SessionManager.GetStatelessSession(type);
var tx = session.BeginTransaction();
session.Insert(instance);

我正在为相关实例使用 HILO 身份生成,但不是为数据库中的所有实例使用。 SessionFactory.OpenStatelessSession 不接受类型,所以它真的不知道它可以对这种类型进行批处理,还是...?

在深入研究 NHibernate 之后,我在 SettingsFactory.CreateBatcherFactory 中发现了一些可能会提供一些额外信息的东西

// It defaults to the NonBatchingBatcher
System.Type tBatcher = typeof (NonBatchingBatcherFactory);

// Environment.BatchStrategy == "adonet.factory_class", but I haven't
// defined this in my config file
string batcherClass = PropertiesHelper.GetString(Environment.BatchStrategy, properties, null);
if (string.IsNullOrEmpty(batcherClass))
{
if (batchSize > 0)
{
// MySqlDriver doesn't implement IEmbeddedBatcherFactoryProvider,
// so it still uses NonBatchingFactory
IEmbeddedBatcherFactoryProvider ebfp = connectionProvider.Driver as IEmbeddedBatcherFactoryProvider;

会不会是我配置有误?

  <hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
<session-factory name="my application name">
<property name="adonet.batch_size">100</property>
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<property name="connection.connection_string">my connection string
</property>
<property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
<!-- To avoid "The column 'Reserved Word' does not belong to the table : ReservedWords" -->
<property name="hbm2ddl.keywords">none</property>
</session-factory>
</hibernate-configuration>

最佳答案

我知道这个问题已经有一年了,但是有 a NuGet package将 MySQL 批处理功能添加到 NHibernate。它没有直接嵌入到 NHibernate 中的原因是该功能需要引用 MySQL.Data 程序集,而开发团队不想要这种依赖关系。

关于nhibernate - 无法使用 NHibernate 批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4726226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com