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
-~----------~----~----~----~------~----~------~--~---

Responder a