C# 在DacFX中,我可以排除针对排除对象的消息吗
我正在使用DacFX来比较和创建SQL Server数据库之间的脚本 运行比较后,我检查了更改,并排除了一些由于内部功能而引起的更改 排除完对象后,我运行C# 在DacFX中,我可以排除针对排除对象的消息吗,c#,sql-server,dacpac,C#,Sql Server,Dacpac,我正在使用DacFX来比较和创建SQL Server数据库之间的脚本 运行比较后,我检查了更改,并排除了一些由于内部功能而引起的更改 排除完对象后,我运行SchemaComparisonResult.GetErrors(),并打印出警告和错误 有些错误是针对被排除的对象的,我不想显示它们,因为它们不再相关 有没有一种方法可以做到这一点,而不必检查消息的内容,因为消息可能会有所不同,并且我无法引用代码中的所有内容 编辑: 我试着用两种方法排除: 运行前比较: Lis
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.GetErrors()请创建一个快照,说明如何排除和执行架构比较