У меня проблема со сравнением схем в C #.
Если я попытаюсь исключить разницу, а разница будет type = TopLevelElement (в DiffEntry), я смогу. Но если я попытаюсь сделать то же самое с ним, Дети (SchemaDifference.Children), я не смогу, потому что два свойства: «Включенный» и «Исключаемый» являются «ложными», а для SchemaDifference - «истинными».
Результатом этого кода является исключение из сценария изменения типа столбца при его изменении с «числового» на «десятичный» и наоборот.
Я пытался исключить множество параметров. почти все, но я заметил, что могу исключить только «разницу на высшем уровне», такую как таблица, представления, триггер и т. д. Я надеюсь, что я ошибаюсь, потому что мне нужно исключить столбец типов.
Это мой код:
SchemaComparison comparison = new SchemaComparison(defaultPath + "\\mycomparison.scmp");
SchemaComparisonResult comparisonResult = comparison.Compare();
if (child.UpdateAction == SchemaUpdateAction.Change)
{
bool excludeDifference = false;
TSqlObject sqlObjectSource = child.SourceObject;
TSqlObject sqlObjectTarget = child.TargetObject;
excludeDifference = CheckColumnType(sqlObjectSource, sqlObjectTarget);
if (excludeDifference == true)
{
comparisonResult.Exclude(child); //here not work for Children
}
}
Я пытался также с List:
comparison.ExcludedSourceObjects.Add(SourceExclusionObject);
comparison.ExcludedTargetObjects.Add(TargetExclusionObject);
В этом случае добавляется исключение для указанных столбцов в .scmpфайл (перед сценарием, где все параметры есть):
<SelectedItem Type="Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlSimpleColumn, Microsoft.Data.Tools.Schema.Sql, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Name>dbo</Name>
<Name>TableName</Name>
<Name>TableColumn</Name>
</SelectedItem>
но не работает ...
Должен быть таким же, чтобы исключить из сравнения только десятичные и числовые значения, но толькоесли масштаб и точность одинаковы.