0

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

4

2 回答 2

1

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

于 2010-01-17T06:11:58.350 回答
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.InstantiateProviderstaking age and ages (from SubSonic)

于 2010-02-17T18:08:55.300 回答