Исключить SchemaDifference.Child из SchemaComparisonResult - PullRequest
0 голосов
/ 23 октября 2019

У меня проблема со сравнением схем в 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>

но не работает ...

Должен быть таким же, чтобы исключить из сравнения только десятичные и числовые значения, но толькоесли масштаб и точность одинаковы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...