"Microsoft.SqlServer.Management.Smo"库中"Database"class的方法"InitTableColumns"有什么作用?

What does the method "InitTableColumns" of the "Database" class in the "Microsoft.SqlServer.Management.Smo" library do?

在 "Microsoft.SqlServer.Management.Smo" nuget 包中有一个 "Database" class,它有一个 "InitTableColumns" 方法。正如所述库中的任何方法一样,这个方法没有摘要。更奇怪的是,其中没有任何提及互联网(是的,认真的)。

尤其是 MSDN Database class 页面。

那么,有人知道它的作用吗?

一般来说,最好避免未记录的方法:)

如果你想反编译它,你可以使用像 DotPeek(来自 JetBrains)或 ILSpy 这样的程序。

安装反编译程序后,您需要找到要反编译的dll。反编译将采用已编译的 .NET 代码并将其转换回应该更易于阅读的 C#(请注意,情况并非总是如此)。

找到dll很容易,你可以从编译代码的bin文件夹中提取它,或者你可以通过在VS解决方案中找到依赖项Microsoft.SqlServer.SqlManagementObjects来浏览找到它的路径资源管理器下拉菜单,右击依赖,点击"properties",复制属性window.

中显示的路径

现在您有了 dll 的路径,您可以使用反编译器打开该路径上的 dll 并反编译它。反编译后,反编译器程序会让您浏览名称空间、类 和 dll 中包含的方法。

这就是它告诉我的 InitTableColumns()

public void InitTableColumns()
{
    this.InitChildLevel((Urn)"Table", (ScriptingPreferences)null, false);
    this.InitChildLevel((Urn)"Table/Column", (ScriptingPreferences)null, false);
}

这让我开始了对代码的疯狂追逐,试图理解这个库是如何实现的!