有没有办法强制部分类中的静态字段初始化顺序?让我们说在HelloWorld1.cs我有:
partial class HelloWorld
{
static readonly string[] a = new[] { "Hello World" };
}
Run Code Online (Sandbox Code Playgroud)
在HelloWorld2.cs的其他地方,我有:
partial class HelloWorld
{
static readonly string b = a[0];
}
Run Code Online (Sandbox Code Playgroud)
如果a在b之前初始化,那么这很好,但如果b在a之前被初始化则会抛出a.健康的方法可能是使用静态构造函数,但我很好奇当有类别在同一个分类的不同文件中时,是否有办法强制或预测初始化顺序.
为了给出一些上下文,我目前正在Amazon RDS上运行一个SQL Server 2012实例,而且我不得不两次移动到更大的实例.第一次SQLAzureMW是要走的路,但当时没有一张表那么大.第二次,SQLAzureMW总是使用大表(超过5 GB的几个)在bcp命令上超时源服务器.同样,SSIS导入/导出向导也超时.我发现源服务器始终是问题所以我尝试将实例的类从m1.medium增加到m1.xlarge无济于事,源服务器仍然总是超时,然后在大表上取得任何重大进展.
最后,我最终编写了自己的.NET程序,只在大型源表上运行"SELECT*FROM [table] ORDER BY [id] OFFSET {0} ROWS",并将结果推送到目标服务器上的SQLBulkCopy中.源服务器再次超时,但我在一个循环中包装了try和catch语句,这将简单地从SQLBulkCopy的最后一点恢复查询.话虽如此,我对这个解决方案并不十分兴奋.
我正在考虑围绕Microsoft.SqlServer.Management.Smo.Transfer类构建一个解决方案,但我担心可能会出现与源代码连接断开无法恢复相同的问题.
我更倾向于开箱即用的解决方案,就像SQLAzureMW在表格过大之前我希望SSIS导入导出向导一样.一定有更好的方法.