public virtual EntityMetadata GetEntityMetadata(string entity) { lock (LockObject) { if (!EntityMetadata.Any(em => em.LogicalName == entity)) { _controller.LogLiteral("Retrieving " + entity + " entity metadata"); var request = new RetrieveEntityRequest { EntityFilters = EntityFilters.Default, LogicalName = entity }; var response = (RetrieveEntityResponse)Execute(request); _controller.LogLiteral("Retrieved " + entity + " entity metadata"); EntityMetadata.Add(response.EntityMetadata); } } return(EntityMetadata.First(em => em.LogicalName == entity)); }