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."); } } } }