¿Cómo puedo saber SubSonic 2 utilizar un archivo .config diferente?
-
21-09-2019 - |
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?
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.