Как я могу сказать SubSonic 2 использовать другой файл .config? - PullRequest
0 голосов
/ 17 января 2010

Я использую SubSonic 2 из проекта и хотел бы указать файл .config, отличный от файла App.config по умолчанию. Как я могу сказать SubSonic использовать определенный файл конфигурации?

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

Похоже, что вы можете сделать это, установив два свойства объектов 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;. Я не уверен, связано ли это с тем, что я здесь делаю, или это общая проблема загрузки сборок. Я задокументировал эту проблему в другом вопросе здесь: Вызов System.Web.Configuration.ProvidersHelper.InstantiateProviders, принимая возраст и возраст (от SubSonic)

1 голос
/ 17 января 2010

Вы не можете - SubSonic работает из настроек провайдера, которые установлены для рабочей среды.Если хотите, вы можете использовать файл connectionStrings.config и поместить его куда-нибудь еще, но SubSonic использует ConfigurationManager, чтобы открыть конфигурацию приложения и найти его плюсы.

...