#631·Bogus

多线程生成没有按预期工作

作者: ahmedwael216创建于 2026年3月6日更新于 2026年3月6日

[Benchmark(Description = "Normal Generation")] [ArgumentsSource(nameof(BatchSizes))] public void Bench1(int batchSize) { var addressFaker = AddressFaker.Create(); var buyerFaker = CompanyFaker.Create() .RuleFor(c => c.Addresses, (_, c) => addressFaker.RuleFor(a => a.CompanyId, c.EdcID).Generate(2)); var orderEventFaker = EventFaker.CreateOrderFaker(); var orderItemEventFaker = EventFaker.CreateOrderItemFaker(); var customFieldOrderFaker = CustomFieldFaker.CreateOrderFaker(); var customFieldOrderItemFaker = CustomFieldFaker.CreateOrderItemFaker();

var orderItemBaseFaker = OrderItemFaker.Create();

var orderFaker = OrderFaker.Create()
	.RuleFor(o => o.OwnerId, _ => OwnerId)
	.RuleFor(o => o.Buyer, _ => buyerFaker.Generate())
	.RuleFor(o => o.BuyerID, (_, o) => o.Buyer!.ID)
	.FinishWith((_, o) =>
	{
		o.Events = orderEventFaker.Generate(10);
		o.Events.ForEach(cf => cf.OrderId = o.ID);
		o.PackLines.ForEach(cf => cf.OrderId = o.ID);
		o.CustomFields = customFieldOrderFaker.Generate(10);
		o.CustomFields.ForEach(cf => cf.OrderId = o.ID);

		var items = orderItemBaseFaker.Generate(2);

		foreach (var item in items)
		{
			item.OrderId = o.ID;
			item.OwnerId = OwnerId;
			item.Events = orderItemEventFaker.Generate(10);
			item.Events.ForEach(cf => cf.OrderItemId = item.ID);
			item.CustomFields = customFieldOrderItemFaker.Generate(10);