我觉得我在这里陷入了几个糟糕的解决方案之间,需要一些关于如何尽量减少未来痛苦的建议。我们正在使用 Massive ORM,它的构造函数中有以下几行:
var _providerName = "System.Data.SqlClient";
if (ConfigurationManager.ConnectionStrings[connectionStringName].ProviderName != null)
_providerName = ConfigurationManager.ConnectionStrings[connectionStringName].ProviderName;
_factory = DbProviderFactories.GetFactory(_providerName);
ConnectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
对我来说重要的部分是它从ConfigurationManager
. 我们正在尝试集中配置,在此过程中,我们希望将连接字符串排除在 web/app.configs 之外(我们有大约 150 个已部署的主机,因此开销变得很大)。但是,由于此处读取的配置文件是硬编码的,并且该ConnectionStrings
集合是只读的(有一些变通方法,但它们都很脏),因此这会发生故障。
解决此问题的一种可能方法是将这些行提取到虚拟方法中,然后通过继承对其进行更改。但是,当我们想要更新 Massive 时,这并不是很好,而且从构造函数调用虚拟方法也可能很糟糕。
我还有什么其他选择?这里的主要优先事项是尽量减少更新时的影响。