Fantástico... El 23 de enero de 2009 15:59, Jose Fabricio Rojas <[email protected]>escribió:
> > Exito¡¡¡ > Muchas Gracias Sergio, salio todo bien.... > > On 23 ene, 01:59, Kash <[email protected]> wrote: > > Si te fijas en la implementación de mi clase, al final del todo hay un > > método estático que devuelve una instancia de la clase, tu no has creado > ese > > método. En realidad podrías instanciar la clase directamente desde tu > > NHibernateHelper con la sentencia que hay en el return de ese método, > pero a > > mi me gusta hacerlo de esta forma. > > Eso no está implementado en el ejemplo del link que te pasé por que es > cosa > > mía. > > > > /// <summary> > > /// Devuelve una instancia correcta de esta misma clase > > /// </summary> > > public static DALGeneralConfigurationSection CurrentConfiguration > > { > > get > > { > > return > > > (DALGeneralConfigurationSection)ConfigurationManager.GetSection("DALGeneral > ") > > ; > > } > > } > > > > El 22 de enero de 2009 21:46, Jose Fabricio Rojas > > <[email protected]>escribió: > > > > > > > > > > > > > Hola Sergio, > > > Implemente una clase que me administre las secciones de configuración > > > del web config. > > > Imports System.Configuration > > > > > Public NotInheritable Class NHibernateConfigurationSection > > > Inherits ConfigurationSection > > > > > Private Shared _Properties As ConfigurationPropertyCollection > > > Private Shared strHibernateFile As New ConfigurationProperty > > > ("hibernate", GetType(String), "hibernate.cfg.xml", > > > ConfigurationPropertyOptions.IsRequired) > > > Private Shared strMappingPath As New ConfigurationProperty > > > ("Mapping", GetType(String), "", > > > ConfigurationPropertyOptions.IsRequired) > > > > > Public Sub New() > > > _Properties = New ConfigurationPropertyCollection() > > > _Properties.Add(strHibernateFile) > > > _Properties.Add(strMappingPath) > > > End Sub > > > > > Protected Overrides ReadOnly Property Properties() As > > > ConfigurationPropertyCollection > > > Get > > > Return _Properties > > > End Get > > > End Property > > > > > Protected Overrides Function GetRuntimeObject() As Object > > > Return MyBase.GetRuntimeObject() > > > End Function > > > > > <StringValidator(InvalidCharacters:=" ~...@#$%^&*()[]{}/;'|\", > > > MinLength:=1, MaxLength:=60)> _ > > > Public Property HibernateFile() As String > > > Get > > > Return CStr(Me("hibernate")) > > > End Get > > > Set(ByVal value As String) > > > Me("hibernate") = value > > > End Set > > > End Property > > > > > <StringValidator(InvalidCharacters:=" ~...@#$%^&*()[]{};'|", > > > MinLength:=1, MaxLength:=60)> _ > > > Public Property MappingPath() As String > > > Get > > > Return CStr(Me("Mapping")) > > > End Get > > > Set(ByVal value As String) > > > Me("Mapping") = value > > > End Set > > > End Property > > > > > End Class > > > y la llamo desde mi Helper de esta manera: > > > Public Class NHibernateHelper > > > > > Private Const CurrentSessionKey As String = > > > "nhibernate.current_session" > > > > > Public Shared SessionFactory As ISessionFactory > > > > > Shared Sub New() > > > Try > > > Dim configurationSection As > > > NHibernateConfigurationSection.CurrentConfiguration ' Esta linea no me > > > reconoce > > > log4net.Config.XmlConfigurator.Configure() > > > Dim cfg As Configuration = New Configuration > > > cfg.Configure(configurationSection.HibernateFile) > > > Dim path As New DirectoryInfo(CStr > > > (configurationSection.MappingPath)) > > > cfg.AddDirectory(path) > > > SessionFactory = cfg.BuildSessionFactory > > > Catch ex As Exception > > > Throw New Exception("NHibernate initializacion failed", > > > ex) > > > End Try > > > End Sub > > > . > > > . > > > . > > > End Class > > > > > Pero tengo un inconveniente no me reconoce esta propiedad > > > "CurrentConfiguration" de la clase que implemente , quizas estoy > > > obviando u olvidando algo, > > > espero me des luces... > > > Gracias nuevamente > > > > > On 22 ene, 12:33, Kash <[email protected]> wrote: > > > > No tengo mucho tiempo para comentar, en el link que te he enviado hay > un > > > > ejemplo de creación de una clase que gestiona una sección de > > > configuración > > > > del web.config o app.config. > > > > Esa clase se puede utilizar desde cualquier capa, ensamblado, ... Yo > lo > > > > estoy haciendo así y funciona perfectamente. > > > > > > Implemento esa clase, y la utilizo desde la capa de presentación (en > mi > > > caso > > > > desde mi NHibernateHelper propio de esta forma: > > > > > > public NHibernateHelper() > > > > { > > > > //Cargamos los datos del fichero de configuración > > > > DALGeneralConfigurationSection cfg = > > > > DALGeneralConfigurationSection.CurrentConfiguration; > > > > //Forma de acceder a la configuración XML de NHibernate y > > > crear > > > > un sessionFactory... > > > > sessionFactory = new > > > > NHibernate.Cfg.Configuration().Configure(cfg.NHibernateConfigPath > > > > ).BuildSessionFactory(); > > > > currentSession = null; > > > > } > > > > > > DALGeneralConfigurationSection es la clase de configuración > > > > cfg.NHibernateConfigPath es una propiedad de la sección de > configuración > > > que > > > > gestiona la clase implementada. > > > > > > y así se especifica en el fichero de configuración: > > > > > > <?xml version="1.0" encoding="utf-8" ?> > > > > <configuration> > > > > > > <configSections> > > > > <section name="DALGeneral" > > > > type="Configuration.DataAccessLayer.DALGeneralConfigurationSection, > > > > Configuration, Version=4.0.0.1, Culture=neutral, > > > > PublicKeyToken=a5dcdbb4fcb73170" allowDefinition="Everywhere" > > > > allowExeDefinition="MachineToApplication" > restartOnExternalChanges="true" > > > /> > > > > > > <DALGeneral nhibernateConfigPath="c:\test\hibernate.cfg.xml" /> > > > > > > </configuration> > > > > > > Lo he puesto un poco deprisa, puede haber errores... > > > > > > El 22 de enero de 2009 18:13, Jose Fabricio Rojas > > > > <[email protected]>escribió: > > > > > > > Hola Sergio, > > > > > bueno gracias por link , pero crear las secciones de configuracion > en > > > > > el web config no es problema ,sino leer sus valores desde otra capa > > > > > ( en mi caso , mi capa de acceso a datos) > > > > > Algo asi como lo que hace Enterprise Library en un paquete de Datos > , > > > > > cuando la la factoria abstracta Database obtiene la cadena de > conexion > > > > > del web config solo con pasarle el nombre de la cadena de conexion. > > > > > > > On 22 ene, 12:02, Kash <[email protected]> wrote: > > > > >http://msdn.microsoft.com/es-es/library/system.configuration.configur. > .. > > > > > > El 22 de enero de 2009 17:54, Jose Fabricio Rojas > > > > > > <[email protected]>escribió: > > > > > > > > > Hola gente > > > > > > > este es mi problema: > > > > > > > Previo: Sucede que mi aplicación tiene una parte de los > archivos de > > > > > > > mapeo(hbm) incrustados y otra parte en una carpeta, esto debido > a > > > que > > > > > > > los que están en la carpeta contienen consultas nombradas y es > un > > > > > > > requerimiento personalizar y cambiar esas consultas nombradas > sin > > > > > > > necesidad de un re-build a la aplicación. > > > > > > > Ahora mediante el BuildSessionFactory() yo cargo los archivos > hbm > > > > > > > incrustados y mediante el cfg.AddDirectory(path) cargo los > archivos > > > de > > > > > > > mapeo que se encuentran dentro de una ruta de disco duro. > > > > > > > Lo que estaba haciendo hasta ahora es crear una clave en el > > > registro y > > > > > > > colocar la ruta en la clave de registro , leer la clave para > > > obtener > > > > > > > el path en donde estaban los hbm y el archivo de configuracion > de > > > NH > > > > > > > (hibernate.cfg.xml para mi caso) > > > > > > > Sucede que por "seguridad" se ha decidido cambiar esto > > > > > > > Problema: > > > > > > > Ahora en mi capa de acceso a datos tengo una clase que me > > > administra > > > > > > > las sesiones de NH y obtiene la ruta del archivo de > configuracion y > > > > > > > ruta de la carpeta de los hbm no incrustados, y construye mis > > > sesiones > > > > > > > a partir de eso. > > > > > > > Lo que quisiera hacer es: Crear una seccion dentro del > web.config > > > con > > > > > > > dos key, una donde apunte a la ruta de mi archivo de > configuracion > > > y > > > > > > > otra clave donde apunte a mi carpeta que contiene los hbm no > > > > > > > incrustados. > > > > > > > Como puedo , o que clases utilizar para que que mi clase que > > > > > > > administra las sesiones vaya hasta el web.config(que esta en mi > > > capa > > > > > > > de presentacion web) y lea esas key y contruya la sesion de NH > a > > > > > > > partir de eso. > > > > > > > Estaria muy agradecido por su ayuda. > > > > > > > Un saludo desde Lima ,Peru > > > > > > > > -- > > > > > > > > ================================= > > > > > > Sergio Castillo Checa > > > > > > -- > > > > > > ================================= > > > > Sergio Castillo Checa > > > > -- > > > > ================================= > > Sergio Castillo Checa > > > -- ================================= Sergio Castillo Checa --~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---
