The recommended approach is the one that you have seen: perform a resolve at the composition root and create the object graph, injecting all dependencies. You are certainly able to use the Container as a singleton and use it as a service locator. However,
many people consider that an anti-pattern (e.g. your code is now tightly coupled to a Container).
In my experience, entities are not usually injected since they are objects created by the repository that hold the data. So, IMO, it would be perfectly acceptable to have the Repository constructor accept an ITracer and have the Repository new up an
Entity: var item = new Entity(tracer, (int)reader["id"]); // or something similar.
Another approach to address this situation is to use an abstract factory. Basically inject an abstract factory into the repository with an ITracer and the factory would then know internally how to create the Entity.
Just a quick comment on the posted code: the service is instantiating a new repository directly in the code. Since the Service depends on having a repository this would usually be injected into the service along with the ITracer.
Enterprise Library support engineer