微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

与 Microsoft.SqlServer.DACFx 相比,如何排除架构中的 SQL 对象?

如何解决与 Microsoft.SqlServer.DACFx 相比,如何排除架构中的 SQL 对象?

在与“排除”-方法 (https://docs.microsoft.com/en-us/dotnet/api/microsoft.sqlserver.dac.compare.schemacomparisonresult.exclude?view=sql-dacfx-150) 进行比较后,我尝试排除 sql 对象。问题在于,该方法非常慢(我想排除 183 个对象)。

然后我想在比较对象之前排除它们。我用这个代码做到了(源数据库的例子。我对目标数据库做同样的事情):

List<TsqlObject> sourceModel = TsqlModel.LoadFromDatabase(options.sourceConnectionString).Getobjects(DacQueryScopes.All).ToList();

               
                var objects2Include = getlistofObjects();
                var excludedobjects = sourceModel.Where(o => String.Join(".",o.Name.Parts) == "dbo.Persons").ToList();  


                   foreach (TsqlObject excludingObject in sourceModel)
                   {
                       string name = String.Join(".",excludingObject.Name.Parts);

                       if (!objects2Include.Contains(name))
                       {
                           comparison.ExcludedSourceObjects.Add(new SchemaComparisonExcludedobjectId(excludingObject.ObjectType,new ObjectIdentifier(excludingObject.Name.Parts.ToArray())));
                           
                       }
                   }

例如:最后(“差异”)总是有这个表“dbo.Persons”。但是这个对象在“excludedobjects”列表中。我还检查了它是否在名称为“dbo.Persons”(调试器)时进入“if”-Statement。确实如此。也没有错误或类似的东西。

在列表“objects2Include”中是我想要比较的对象。它是一个简单的字符串列表(如:"dbo.Persons","dbo.Test",...)

我做错了什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。