我在一个项目中使用 SubSonic 2,我想指定一个与默认 App.config 不同的 .config 文件。如何告诉 SubSonic 使用特定的配置文件?
问问题
408 次
2 回答
1
您不能 - SubSonic 使用为执行环境设置的提供程序设置工作。如果需要,您可以使用 connectionStrings.config 并将其放在其他地方,但 SubSonic 使用 ConfigurationManager 打开应用程序的配置并找到它的好东西。
于 2010-01-17T06:11:58.350 回答
1
看来您可以通过设置 SubSonic 对象的两个属性来做到这一点:DataService.ConfigSection
和DataProvider.DefaultConnectionString
. 一旦设置了这些,SubSonic 将不会尝试查找默认的应用程序配置文件,它只会使用您提供的详细信息。
例如:
// Part 1: set the config section:
string configPath = Assembly.GetExecutingAssembly().Location + ".config";
ExeConfigurationFileMap execfg = new ExeConfigurationFileMap();
execfg.ExeConfigFilename = configPath;
Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(execfg, ConfigurationUserLevel.None);
DataService.ConfigSection = (SubSonicSection)configuration.GetSection(ConfigurationSectionName.SUB_SONIC_SERVICE);
// Part 2: set the connection string
string connectionString = configuration.ConnectionStrings.ConnectionStrings["xLocal"].ConnectionString;
DataProvider provider = DataService.Provider;
provider.DefaultConnectionString = connectionString;
这似乎运作良好,但是我有时会在第 2 行到最后一行遇到很长的延迟DataProvider provider = DataService.Provider;
。我不确定这是否与我在这里所做的事情有关,或者这是一个一般的程序集加载问题。我在另一个问题中记录了这个问题:Call to System.Web.Configuration.ProvidersHelper.InstantiateProviderstaking age and ages (from SubSonic)
于 2010-02-17T18:08:55.300 回答