У меня такая ситуация: у меня есть объект MasterPlanComponent, который содержит несколько целей. Эти цели содержат несколько целей.
При создании masterPlanComponent (с 2 целями) мы создаем 4 цели для обеих этих целей.
Вот как это должно выглядеть:
- 1 компонент> 2 цели> 8 целей (4 для одной, 4 для другой, цели являются пустыми и их просто необходимо создать в базе данных)
Проблема с нижеуказанным Код состоит в том, что создается только один набор из 4 целей, и только для второй цели.
public async Task<MasterPlanComponent> CreateMasterPlanComponent(int masterPlanId, CreateMasterPlanComponentCommand command)
{
var masterPlan = await _context.MasterPlans
.Include(mp => mp.Components)
.Include(mp => mp.Objectives)
.SingleOrDefaultAsync(m => m.MasterPlanId == masterPlanId);
var targets = new List<ObjectiveNetTarget>();
//creating new targets and setting two of their fields
for (int i = 0 ; i < 4 ; i++)
{
targets.Add(new ObjectiveNetTarget
{
CustomerMarketSegment = command.Scope.CustomerMarketSegment,
OrganizationUnit = new OrganizationUnitRef
{
Name = "Sales",
Code = "1251"
}
});
}
var masterPlanComponent = Mapper.Map<CreateMasterPlanComponentCommand, MasterPlanComponent>(command);
foreach (var objective in masterPlanComponent.Objectives)
{
objective.TargetValues = new List<ObjectiveNetTarget>(targets);
}
masterPlanComponent.Status = MasterPlanComponentStatuses.New;
masterPlan.Components.Add(masterPlanComponent);
masterPlan.Objectives = masterPlan.Objectives.Concat(masterPlanComponent.Objectives).ToList();
//masterPlanComponent.Objectives targets, I can see that both of them have 4 net targets as it should be
await _context.SaveChangesAsync();
_logger.LogInformation("New master plan component created.");
_logger.LogInformation("Master plan component id: " + masterPlanComponent.ComponentId.ToString());
//after I try to save the context however, only one of them has it.
return masterPlanComponent;
}
этот код приводит к тому, что в базу данных записывается только 4 цели, каждая из которых указывает только на одну (последнюю) цель