Я использую 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 ()