Adding multiple ECS components at the same time

Here is my current way of creating a new Plant for my simulation.

EntityCommandBuffer ecb = new EntityCommandBuffer(Allocator.Temp);
Entity entity = entityManager.Instantiate(prefab);
ecb.AddComponent(entity, new LifeTime() { age = 0, deathAge = deathAge });
ecb.AddComponent(entity, new Position() { gridPosition = pos });
ecb.AddComponent(entity, new Growth() { growthTime = 2f });
ecb.AddComponent(entity, new Energy() { gainSpeed=5});
ecb.AddComponent(entity, new Spread() { count = 3, interval = spread, range = 3 });
ecb.SetComponent(entity, LocalTransform.FromPosition(new float3(pos.x + 0.5f,height, pos.y + 0.5f)));

The plant should “inherit” from a default plant prefab that is baked from unity with everything related to rendering.

The problem here is that .AddComponent moves the entity each time to a new chunk with that archetype. Moving the entity 6 times is not efficient and causes a lot of problems at the moment.

Is their any way to use Archetypes?

public static void CreatePlantArchetype(EntityManager em)
    EntityArchetype pA = em.CreateArchetype(typeof(LifeTime), typeof(Position), typeof(Growth), typeof(Energy), typeof(Spread),typeof(LocalTransform));
    plantArchetype = pA;

With this code I can create a archetype with all the extra components but I cant find a function for combining a instantiated entity and a archetype.

Is there a way I’m missing or is moving the entity 6 times the only way?

I don’t want to bake each component and configure everything in the scene since this will be a modular system in the future were entities can be having extra or less components added.

Since entities 1.0 advocates practice of prefab-baking workflow, let me advise for giving it a chance.

In particular, try generating a finite set of variants to serve this modular system. Try for real. Modular never means infinite and rarely can’t be substituted by a pre-baked data - which is often a good/best solution performance-wise either way.

If these attempt succeed - you have solved the problem already.
If these attempts fail - you at least know you can’t do this any other way and have experimental arguments to back it up.