Могу ли я исключить сообщения, относящиеся к исключенным объектам, в DacFX? - PullRequest
4 голосов
/ 05 мая 2020

Я использую DacFX для сравнения и создания сценария между SQL базами данных сервера.

После выполнения сравнения I go по изменениям и исключения некоторых из-за внутренней функциональности.

После того, как я завершил sh, исключая запущенные мной объекты SchemaComparisonResult.GetErrors() и распечатал предупреждения и ошибки.

Некоторые из ошибок относятся к объектам, которые были исключены, и я не хочу отображать их как они больше не актуальны.

Есть ли способ сделать это, не просматривая содержимое сообщения, поскольку сообщения могут отличаться, и я не могу ссылаться на все в моем коде

Изменить :

Я пробовал выполнить исключение двумя способами:

Перед запуском сравнения:

                List<TSqlObject> sourceModel = TSqlModel.LoadFromDatabase(sourceConnectionStringBuilder.ConnectionString).GetObjects(DacQueryScopes.UserDefined).ToList();
                List<TSqlObject> targetModel = TSqlModel.LoadFromDatabase(targetConnectionStringBuilder.ConnectionString).GetObjects(DacQueryScopes.UserDefined).ToList();
                TSqlObject sourceObject;
                TSqlObject targetObject;
                foreach (var exclude in preExcludeProp)
                {
                    sourceObject = sourceModel.FirstOrDefault(o => string.Join(".", o.Name.Parts) == exclude.ToString());
                    targetObject = targetModel.FirstOrDefault(o => string.Join(".", o.Name.Parts) == exclude.ToString());
                    if (sourceObject != null)
                    {
                        comparison.ExcludedSourceObjects.Add(new SchemaComparisonExcludedObjectId(sourceObject.ObjectType, new ObjectIdentifier(sourceObject.Name.Parts.ToArray())));
                    }
                    if (targetObject != null)
                    {
                        comparison.ExcludedTargetObjects.Add(new SchemaComparisonExcludedObjectId(targetObject.ObjectType, new ObjectIdentifier(targetObject.Name.Parts.ToArray())));
                    }
                }

После запуска сравнения:

                foreach (SchemaDifference diff in results.Differences)
                {
                    string name = string.Join(".", (diff.SourceObject ?? diff.TargetObject).Name.Parts);
                    if (postExcludeProp.Contains(name))
                    {
                        results.Exclude(diff);
                    }
                }

Оба были те же результаты

Сравнить: SchemaComparisonResult results = compare.Compare ();

Получение ошибок: results.GetErrors ()

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