/// <summary> /// Добавляет указанные атрибуты для определения схемы базы данных /// </summary> /// <param name="attributes">Атрибуты сборки для определения схемы базы данных</param> /// <param name="isGlobal">True - только глобальные, false - только локальные</param> public void AddAttributes(PersistentSchemaAttribute[] attributes, bool isGlobal) { foreach (PersistentSchemaAttribute attribute in attributes) if (attribute.IsGlobal == isGlobal) { if (string.IsNullOrEmpty(attribute.Namespace)) defaultSchema = attribute.Schema; else { if (namespaceSchemas == null) namespaceSchemas = new List<PersistentSchemaAttribute>(); namespaceSchemas.Add(attribute); } } if (namespaceSchemas != null) namespaceSchemas.Sort((a, b) => -string.Compare(a.Namespace, b.Namespace)); }
/// <summary> /// Устанавливает внешние атрибуты схем базы данных /// </summary> /// <param name="attributes">Атрибуты схем базы данных, указанные из произвольного источника</param> /// <param name="tablePrefixes">Префиксы таблиц, заданные в свойстве TablePrefixes приложения Xaf</param> /// <param name="overrideMode">Приоритет использования внешних атрибутов: true - высокий, false - низкий</param> public void SetupExternalSchemaAttributes(PersistentSchemaAttribute[] attributes, string tablePrefixes, bool overrideMode) { // Очистка установленных значений schemasExternal.Clear(); this.tablePrefixes.Clear(); // Схемы базы данных schemasExternal.AddAttributes(attributes, false); schemasExternal.AddAttributes(attributes, true); this.schemasExternalPriority = overrideMode; // Префиксы таблиц if (!string.IsNullOrEmpty(tablePrefixes)) { List<PersistentSchemaAttribute> list = new List<PersistentSchemaAttribute>(); foreach (string pair in tablePrefixes.Split(';')) { string value = pair != null ? pair.Trim() : pair; if (string.IsNullOrEmpty(value)) continue; int pos = value.IndexOf('='); if (pos <= 0 || pos == value.Length - 1) continue; string nameSpace = value.Substring(0, pos).Trim(); string prefix = value.Substring(pos + 1, value.Length - pos - 1).Trim(); list.Add(new PersistentSchemaAttribute(prefix, nameSpace)); } this.tablePrefixes.AddAttributes(list.ToArray(), false); } }