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

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