我怎么能告诉SubSonic 2使用不同的.config文件?

时间:2010-01-17 02:40:11

标签: .net subsonic app-config subsonic2.2

我正在项目中使用SubSonic 2,我想从默认的App.config中指定一个不同的.config文件。如何告诉SubSonic使用特定的配置文件?

2 个答案:

答案 0 :(得分:1)

您不能 - SubSonic适用于为执行环境设置的提供程序设置。如果你愿意,你可以使用connectionStrings.config并将其放在其他地方,但SubSonic使用ConfigurationManager打开应用程序的配置并找到它的好东西。

答案 1 :(得分:1)

您可以通过设置SubSonic对象的两个属性来执行此操作:DataService.ConfigSectionDataProvider.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)