gpt4 book ai didi

batch-processing - 给定一个对象列表,使用 C# 将它们推送到 ravendb,而不知道哪些已经存在

转载 作者:行者123 更新时间:2023-12-04 08:29:13 26 4
gpt4 key购买 nike

给定 1000 个具有复杂数据结构的文档。例如一个 Car 类,它具有三个属性:Make 和 Model 以及一个 Id 属性。

在 C# 中将这些文档推送到 raven 数据库(最好是批处理)的最有效方法是什么,而不必单独查询 raven 集合以查找要更新和插入的内容。目前我必须这样。这是完全没有效率的。注意:_session 是 IDocumentSession 的包装器,其中 Commit 调用 SaveChanges,Add 调用 Store

    private void PublishSalesToRaven(IEnumerable<Sale> sales)
{
var page = 0;
const int total = 30;
do
{
var paged = sales.Skip(page*total).Take(total);
if (!paged.Any()) return;
foreach (var sale in paged)
{
var current = sale;
var existing = _session.Query<Sale>().FirstOrDefault(s => s.Id == current.Id);
if (existing != null)
existing = current;
else
_session.Add(current);
}
_session.Commit();
page++;
} while (true);
}

最佳答案

您的 session 代码似乎无法使用 RavenDB api 进行跟踪(我们没有AddCommit)。以下是您如何在 RavenDB 中执行此操作

private void PublishSalesToRaven(IEnumerable<Sale> sales)
{
sales.ForEach(session.Store);
session.SaveChanges();
}

关于batch-processing - 给定一个对象列表,使用 C# 将它们推送到 ravendb,而不知道哪些已经存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815727/

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