+1  A: 

The code you posted does more than translate between the EF type and the DTO type - you're also fetching the data from the database. Try to separate the two for measurement purposes. Chances are that it's the data retrieval that takes 10 seconds, not the time spent moving data around in memory.

John Saunders
I don't see where I interact with the database in that function? I mearly creates a new list from an list which is the parameter?
I may have read that wrong. Why do you pass and return "List" instead of List<DataLayer.CarModelDefinition> and List<CarDefinitionDTO>? What is the actual parameter to the method call? Are you sure it's just a list and not an IQueryable?
John Saunders
I don't know if you saw the func definition in the top( public List Transform(List carModelDefinition)). I return a DTO instead of Datalayer.Carmodeldefinition because in the UI I don't wan't any coupling between DataLayer and the UI - therefore I use DTO's.
DTO - good. "List" instead of "List<T>" - that's what I'm asking about. There's nothing in the code itself that could be slow. Only chance would be if you called it with something slow. That's why I wondered how you call this method, since not using List<T>.
John Saunders
A: 

I load it by saying:

        public List<CarDefinitionDTO> LoadAll()
    {
        List<DataLayer.CarModelDefinition> carList = (from cd in mee.CarModelDefinition select cd).ToList();
        CarDefinitionDTO cdDTO = new CarDefinitionDTO();
        List<CarDefinitionDTO> carDefList = cdDTO.Transform(carList);
        return carDefList;
    }
A: 

I found the error. In the constructor I create the instance of the Entity manager, and when I created a new object it would create a new instance all the time, which was quite time consuming.