protected StaticRecordMetadata GetRecordMetadataByName(string name)
        {
            StaticRecordMetadata record = (StaticRecordMetadata)RecordsMetaByName[name];

            if (record == null || !record.Valid)
            {
                record = newStaticRecord();

                using (Transaction systemTransaction = DatabaseAccess.ForSystemDatabase.GetReadOnlyTransaction()) {
                    using (IDataReader reader = DBRuntimePlatform.Instance.GetStaticRecordByName(systemTransaction, name, EntityKey, EspaceId)) {
                        if (reader.Read())
                        {
                            record.Read(reader);
                            AddToMetadataCache(record);
                        }
                        else
                        {
                            //Not found on db so we can return a empty record
                            OSTrace.Error("GetRecordMetadataByName(Name=" + name +
                                          ", EntityKey=" + ObjectKeyUtils.DatabaseValue(EntityKey) +
                                          ", EspaceId=" + EspaceId + ") found no metadata!");
                        }
                    }
                }
            }
            return(record);
        }
 protected void AddToMetadataCache(StaticRecordMetadata meta)
 {
     if (meta != null && meta.Valid)
     {
         lock (_recordsMetaByKey) {
             if (meta.Name != null)
             {
                 _recordsMetaByName[meta.Name] = meta;
             }
             if (meta.Key != null)
             {
                 _recordsMetaByKey[meta.Key] = meta;
             }
         }
     }
 }
 protected void LoadAllEntriesMetadata()
 {
     using (OSTrace.Timer("StaticEntityRuntime.LoadAllEntriesMetadata: Loading metadata for " + ObjectKeyUtils.DatabaseValue(EntityKey) + ".")) {
         using (Transaction tran = DatabaseAccess.ForSystemDatabase.GetReadOnlyTransaction()) {
             using (IDataReader reader = DBRuntimePlatform.Instance.GetStaticRecordsByEntity(tran, EntityKey, EspaceId)) {
                 int count = 0;
                 while (reader.Read())
                 {
                     StaticRecordMetadata record = newStaticRecord();
                     record.Read(reader);
                     AddToMetadataCache(record);
                     count++;
                 }
                 OSTrace.Debug("StaticEntityRuntime.LoadAllEntriesMetadata: Loaded " + count + " metadata records.");
             }
         }
     }
 }