Таблица ModuleSubstitution
Таблица ModuleSubstitution указывает настраиваемые поля базы данных модуля и предоставляет шаблон конфигурации каждого поля. Средство слияния или пользователя может запрашивать эту таблицу, чтобы определить, какие операции конфигурации должны выполняться. Эта таблица не объединяется в целевую базу данных.
Следующие таблицы не могут содержать настраиваемые поля и не должны быть перечислены в этой таблице:
Таблица ModuleSubstitution
Таблица ModuleSubstitution содержит следующие столбцы.
Столбец | Тип | Ключ | Допустимое значение NULL |
---|---|---|---|
Стол | идентификатора | Y | N |
Ряд | текста | Y | N |
Столбец | идентификатора | Y | N |
Ценность | текста | N | Y |
Столбцы
-
таблица
-
Этот столбец указывает имя таблицы, изменяемой в базе данных модуля.
-
Строка
-
Это поле указывает первичные ключи целевой строки в таблице с именем в столбце таблицы. Несколько первичных ключей разделены точкой с запятой. Целевые строки выбираются для изменения перед внесением изменений в целевую таблицу. Если одна запись в таблице ModuleSubstitution изменяет поле первичного ключа целевой строки, другие записи в таблице ModuleSubstitution применяются на основе исходных данных первичного ключа, а не на основе подстановок первичного ключа. Порядок подстановки строк не определен.
Значения в этом столбце всегда находятся в специальном формате CMSM. Можно добавить литеральный знак с запятой (';') или знак равенства ('='), префиксируя символ с обратной косой чертой. '\'. Значение NULL для ключа обозначается значением NULL, начальным точкой с запятой, двумя последовательными точками с запятой или запятой в зависимости от того, является ли значение null единственным, первым, средним или конечным значением столбца ключа.
-
Столбец
-
Это поле указывает целевой столбец в строке с именем в столбце "Строка". Если несколько строк в таблице ModuleSubstitution изменяют разные столбцы одной целевой строки, все подстановки столбцов выполняются перед вставкой измененной строки в базу данных. Порядок подстановки столбцов не определен.
-
значение
-
Этот столбец содержит строку, которая предоставляет шаблон форматирования для данных, которые заменяются целевым полем, указанным в таблице, строке и столбце. При обнаружении строки подстановки формы [=ItemA] строка, включая символы скобки, заменяется значением настраиваемого элемента ItemA. Настраиваемый элемент ItemA указан в столбце Name таблицы moduleConfiguration ModuleConfiguration, а его значение предоставляется средством слияния. Если средство слияния отказывается предоставить значение для любого элемента в строке замены, значение по умолчанию, указанное в столбце DefaultValue таблицы ModuleConfiguration Table, будет заменено. Если строка ссылается на элемент, не в таблице ModuleConfiguration, слияние завершается ошибкой.
- В этом столбце используется специальный формат CMSM. Литеральный знак с запятой (';') или знак равенства ('=') можно добавить в таблицу, префиксируя символ с обратной косой чертой. '\'.
- Поле "Значение" может содержать несколько строк подстановки. Например, конфигурация элементов "Food1" и "Food2" в строке: "[=Food1] хороша, но [=Food2] лучше, потому что [=Food2] является более питательным".
- Строки замены не должны быть вложенными. Недопустимый шаблон "[=AB[=CDE]".
- Если поле "Значение" имеет значение NULL, а целевое поле не допускает значения NULL, слияние завершается ошибкой, а объект ошибки типа msmErrorBadNullSubstitution создается и добавляется в список ошибок. Дополнительные сведения см. в описании типов ошибок, описанных вфункцииget_Type.
- Если поле "Значение" вычисляется по значению NULL GUID: {00000000-0000-0000-0000-000000000000}, идентификатор GUID NULL заменяется именем функции, прежде чем строка будет объединена в модуль. Дополнительные сведения см. в разделе Ссылки на функции в модулях слияния.
- Шаблон в поле "Значение" вычисляется перед вставленным в целевое поле. Перед заменой любых функций выполняется подстановка в строку.
- Если столбец Value вычисляет строку только целочисленных символов (с необязательным или -), строка преобразуется в целое число перед заменой в целевое поле типа целочисленного формата. Если шаблон вычисляет строку, которая не состоит только из целых символов (и необязательного + или -), результат не может быть заменен на целочисленное целевое поле. Попытка вставки целочисленного числа в целочисленное поле приводит к сбою слияния и добавляет объект ошибки msmErrorBadSubstitutionType в список ошибок.
- Если целевой столбец, указанный в полях таблицы и столбца, является типом текстового формата, а оценка поля "Значение" приводит к типу целочисленного формата, десятичное представление числа вставляется в целевое текстовое поле.
- Если целевое поле является типом целочисленного формата, а поле "Значение" состоит из неотеченного списка элементов в bitfield Format, значение в целевом поле объединяется с помощью побитового И оператора с обратной побитовой OR всех значений маски из элементов, затем в сочетании с помощью побитового ИЛИ оператора с каждым из целых или битовых элементов при маскировке соответствующими значениями маски. По сути, это явно задает биты от свойств заданным значениям, но оставляет все остальные биты в ячейке в одиночку.
- Если поле "Значение" оценивается как тип формата ключаи является ключом в таблице, используюющей несколько первичных ключей, за именем элемента может следовать точка с запятой и целочисленное значение, указывающее индекс на основе 1 в набор значений, которые вместе делают первичный ключ. Если целое число не указано, используется значение 1. Например, таблица управления содержит два первичных ключевых столбца, Dialog_ и Control. Значение элемента "Item1", который является ключом в таблице control, будет иметь форму "DialogName; ControlName", где DialogName — это значение в таблице Dialog_ и ControlName — это значение в столбце Control. Чтобы заменить просто ControlName, строка подстановки [=Item1; 2] следует использовать.
Замечания
Таблица ModuleSubstition используется настраиваемыми модулями слияния. Mergemod.dll версии 2.0 или более поздней требуется для создания настраиваемого модуля слияния.
Чтобы обеспечить совместимость с версиями Mergemod.dll более ранней версии 2.0, таблица ModuleConfiguration и ModuleSubstitution table должна быть включена в таблицу ModuleIgnoreTable каждого модуля.