Hola,
tengo un problema muy raro a mi entender.
Como soy bastante nuevo en esto primero escribo el código de la forma más
fácil, pero después lo mejoro y uso Reflection para que el desarrollo sea más
rápido.
El problema en concreto es que en la línea cfg.AddAssembly("AccesoDatos") me
genera este error:
NHibernate.MappingException "Could not add assembly AccesoDatos"
y en InnerException, System.IO.FileNotFoundException "Could not load file or
assembly 'AccesoDatos' or one of its dependencies. El sistema no puede hallar
el archivo especificado.":"AccesoDatos"
Lo raro es que esto pasa cuando elimino una función que ya no uso (de eso estoy
seguro).
Más abajo les copio algo de código, si necesitan ver algo más díganme.
La función que reemplacé es Listar(), y la versión anterior esta como
Listar_antigua() (esta última si la elimino genera el error y si no anda bien,
pero repito, no la uso en ninguna parte)
Hice varias pruebas y fui "limpiando" el código de Listar_antigua() hasta
aislar el problema, y encontré que con eliminar la línea Grilla.DataSource =
Sesion.CreateCriteria(GetType(Zonas)) ya provoca ese error.
Lo otro que me parece raro es que el error se genera al instanciar el objeto y
que todavía no se llama a ninguna de esas funciones.
Gracias desde ya
Imports System
Imports NHibernate
Imports NHibernate.Cfg
Imports NHibernate.Expression
Imports AccesoDatos
Public Class ABM
Private sessionFactory As ISessionFactory = Nothing
Private cfg As Configuration = Nothing
Dim CapaDatos As Reflection.Assembly
Dim Clase As Type = Nothing
Dim Entidad As Object = Nothing
Public Sub New(ByVal Tipo As TipoABM)
cfg = New Configuration()
cfg.AddAssembly("AccesoDatos")
sessionFactory = cfg.BuildSessionFactory()
CapaDatos = Reflection.Assembly.Load("AccesoDatos")
Clase = CapaDatos.GetType("AccesoDatos." & ClaseCapaDatos(Tipo))
Entidad = Activator.CreateInstance(Clase)
End Sub
Public Function Listar() As IList
Dim Sesion As ISession = Nothing
Dim Criterio As ICriteria
Dim Resultados As IList = Nothing
Try
Sesion = sessionFactory.OpenSession()
Criterio = Sesion.CreateCriteria(Clase)
Resultados = Criterio.List()
If Resultados.Count = 0 Then
Resultados = Nothing
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
If Sesion IsNot Nothing Then Sesion.Close()
End Try
Return Resultados
End Function
Public Sub Listar_antigua(ByRef Grilla As DataGridView)
Dim Sesion As ISession = Nothing
Try
Sesion = sessionFactory.OpenSession()
Grilla.DataSource = Sesion.CreateCriteria(GetType(Zonas))
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
End Class
===========================================================
Esa clase la uso desde un form con este código
Public Class frmABM
Private FuncionesABM As ABM
Public Sub New(ByVal Tipo As TipoABM)
InitializeComponent()
FuncionesABM = New ABM(Tipo)
Me.Show()
CompletarGrilla()
End Sub
Private Sub CompletarGrilla()
dgGrilla.DataSource = FuncionesABM.Listar()
End Sub
End Class
--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups-beta.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---