我正在项目中使用SubSonic 2,我想从默认的App.config中指定一个不同的.config文件。如何告诉SubSonic使用特定的配置文件?
答案 0 :(得分:1)
您不能 - SubSonic适用于为执行环境设置的提供程序设置。如果你愿意,你可以使用connectionStrings.config并将其放在其他地方,但SubSonic使用ConfigurationManager打开应用程序的配置并找到它的好东西。
答案 1 :(得分: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.InstantiateProviders taking ages and ages (from SubSonic)