gpt4 book ai didi

nhibernate - 一次将 1000 多条记录保存到数据库中

转载 作者:行者123 更新时间:2023-12-04 00:24:29 25 4
gpt4 key购买 nike

我目前正在使用 NHibernate。我有一种情况,我需要像这样将一堆记录保存到数据库中:

var relatedTopics = GetRelatedTopics(topic);
foreach (var relatedTopic in relatedTopics /* could be anywhere from 10 - 1000+ */)
{
var newRelatedTopic = new RelatedTopic { RelatedTopicUrl = relatedTopic, TopicUrl = topic.Name };
_repository.Save(newRelatedTopic);
}

当有大量记录要保存时,这显然非常繁重,必须多次访问数据库。什么是更好的方法?我可以做某种批量更新吗?我最好使用数据集吗?

谢谢

最佳答案

设置 adonet.batch_size 可以改善这种情况。

为此你必须

  • 在 NH 配置中设置 adonet.batch_size

  • 示例:
        m_sessionFactory = Fluently
    .Configure()
    .Database(MsSqlConfiguration
    .MsSql2005
    .ConnectionString(c => c.FromConnectionStringWithKey("testme"))
    )
    .Mappings(m => m.FluentMappings
    .AddFromAssemblyOf<TestImpl>())
    .ExposeConfiguration(config =>
    {
    config.SetProperty("adonet.batch_size", "1");
    m_configuration = config;
    })
    .BuildSessionFactory();
  • 在保存之前在 session 上设置批处理大小
    using (ISession session = m_nhibernateSessionFactory.GetSession())
    using (var tx = session.BeginTransaction())
    {
    session.SetBatchSize(1000);
    foreach (var server in serverz)
    {
    session.SaveOrUpdate(server);
    }
    tx.Commit();
    }
  • 关于nhibernate - 一次将 1000 多条记录保存到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982295/

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