gpt4 book ai didi

c# - 尝试使用 Hangfire 时的自引用循环

转载 作者:行者123 更新时间:2023-12-05 07:11:37 24 4
gpt4 key购买 nike

我正在 ASP.NET Core 中开发 Web API,我们发现自己需要为大型批量插入操作运行后台任务。然而,我插入的模型包含来自 .NET Topology SuiteGeometry 类型的属性。 .

public class GeometricData
{
//...

public Geometry Geometry { get; set; }
}

为了批量插入,我使用了一种我发现的方法 here它的性能很好,但它的实现超出了这个问题的范围。尽管速度很快,但例如,用户可能会一次性插入超过一百万条记录,因此我们决定将此处理转移到后台任务。 Hangfire扩展起初看起来可以为我们节省很多时间,但它似乎不能很好地处理 Geometry 类型。在下面的代码中,BackgroundTask 方法也可能是一个空方法:

public Task BulkInsert(IEnumerable<GeometricData> list)
{
BackgroundJob.Enqueue(() => BackgroundTask(list));

return Task.CompletedTask;
}

只是在 Enqueue 的操作中将 Geometry 列表作为参数传递给 BackgroundTask 的行为将抛出不幸的错误:

检测到类型为“NetTopologySuite.Geometries.Coordinate”的属性“CoordinateValue”的自引用循环。路径“[0].Geometry.Coordinates[0]”。

事实上,Coordinates(一个 NTS 类)确实引用了自身:

enter image description here

不知道他们为什么要那样做,但他们做到了。无论如何,到目前为止一切都很好,但除非我设法找到解决这个问题的方法(或者甚至可能绕过它),否则我将从头开始实现后台工作人员会遇到很多麻烦(我'我们将使用 Worker Service,以防万一有人想知道)。有什么指点吗?

最佳答案

伙计,在几何和坐标上方添加 JsonIgnoreAttribute,另外:检查以下链接:newtonsoft.com/json/help/html/PropertyJsonIgnore.htm

关于c# - 尝试使用 Hangfire 时的自引用循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60730028/

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