Exemple #1
0
        /// <summary>
        /// Returns the metadata for an entity.
        /// </summary>
        /// <param name="entityName"></param>
        /// <returns></returns>
        public CrmEntityMetadata GetEntityMetadata(string entityName)
        {
            var changes = _Metadata.GetOrAdd(entityName, p =>
            {
                Debug.WriteLine("Retrieving metadata for entity: " + entityName, "Metadata");

                var pseudoMetadata = CheckPseudoEntity(entityName);
                if (pseudoMetadata != null)
                {
                    return(pseudoMetadata);
                }
                var metadata = _repository.GetChanges(entityName, null);
                if (metadata.EntityMetadata == null || metadata.EntityMetadata.Count == 0)
                {
                    throw new ArgumentException("Could not find metadata for entity named: " + entityName);
                }
                var entMeta      = metadata.EntityMetadata[0];
                var atts         = _metadataConverter.ConvertAttributeInfoList(entMeta.Attributes);
                var result       = new CrmEntityMetadata(entityName, atts, entMeta.PrimaryIdAttribute);
                result.Timestamp = metadata.ServerVersionStamp;
                return(result);
            });

            return(changes);
        }
        private CrmEntityMetadata LoadTestMetadataForEntity(string entityName)
        {
            var path          = Environment.CurrentDirectory;
            var shortFileName = entityName + "Metadata.xml";

            var fileName = System.IO.Path.Combine(path, "MetadataFiles\\", shortFileName);

            if (!File.Exists(fileName))
            {
                throw new FileNotFoundException("Could not find metadata file for entity " + entityName);
            }

            using (var reader = new XmlTextReader(fileName))
            {
                var deserialised = EntityMetadataUtils.DeserializeMetaData(reader);

                var atts = new List <AttributeMetadata>();
                atts.AddRange(deserialised.Attributes);
                var attsList = _MetadataConverter.ConvertAttributeInfoList(atts);
                var entName  = "contact";
                var crmMeta  = new CrmEntityMetadata(entName, attsList, deserialised.PrimaryIdAttribute);
                return(crmMeta);
            }
        }