Pregunta

Estoy usando SubSonic 2 desde dentro de un proyecto y me gustaría especificar un archivo .config diferente de la App.config defecto. ¿Cómo puedo saber SubSonic utilizar un archivo de configuración específico?

¿Fue útil?

Solución 2

Parece que usted puede hacer esto mediante el establecimiento de dos propiedades de los objetos SubSonic: DataService.ConfigSection y DataProvider.DefaultConnectionString. Una vez que se establecen los SubSonic no tratará de buscar el archivo de configuración de aplicación predeterminada, sólo se va a utilizar los datos que he dado.

Por ejemplo:

        // 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;

Esto parece funcionar bien, sin embargo a veces estoy experimentando una larga demora en el segundo al último DataProvider provider = DataService.Provider; línea. No estoy seguro de si esto tiene que ver con lo que estoy haciendo aquí o se trata de un problema general de montaje de carga. He documentado este problema en otra pregunta aquí: Llame a Sistema .Web.Configuration.ProvidersHelper.InstantiateProviders tomar las edades y edades (de SubSonic)

Otros consejos

No se puede - SubSonic trabajos de configuración del proveedor que se establecen para el entorno de ejecución. Se podría, si quisiera, utilizar un connectionStrings.config y poner eso en otro lugar, pero SubSonic utiliza ConfigurationManager para abrir configuración de la aplicación y encontrar que es golosinas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top