Buenos dias. Agradeceria que me ayudaran. Hace un tiempo (no tanto)
que programo en c#. Estuve escuchando bastante de NHibernate y lo
quise probar. Pero me pase toda la mañana intentado solucionar el
siguiente error :

"Could not compile the mapping document: Entidades.Persona.hbm.xml"

El mensaje de error que me muestra es:

NHibernate.MappingException was unhandled
  Message="Could not compile the mapping document:
Entidades.Persona.hbm.xml"
  Source="NHibernate"
  StackTrace:
       en NHibernate.Cfg.Configuration.LogAndThrow(Exception
exception)
       en NHibernate.Cfg.Configuration.AddValidatedDocument
(NamedXmlDocument doc)
       en NHibernate.Cfg.Configuration.ProcessMappingsQueue()
       en NHibernate.Cfg.Configuration.AddDocumentThroughQueue
(NamedXmlDocument document)
       en NHibernate.Cfg.Configuration.AddXmlReader(XmlReader
hbmReader, String name)
       en NHibernate.Cfg.Configuration.AddInputStream(Stream
xmlInputStream, String name)
       en NHibernate.Cfg.Configuration.AddResource(String path,
Assembly assembly)
       en NHibernate.Cfg.Configuration.AddAssembly(Assembly assembly)
       en NHibernate.Cfg.Configuration.AddAssembly(String
assemblyName)
       en Entidades.SessionFactory.Init() en C:\Documents and Settings
\...@d!a\mis documentos\Visual Studio 2008\Projects\PruebaNH\Entidades
\SessionFactory.cs:línea 20
       en Entidades.SessionFactory.GetSessionFactory() en C:\Documents
and setting...@d!a\mis documentos\Visual Studio 2008\Projects\PruebaNH
\Entidades\SessionFactory.cs:línea 27
       en Entidades.SessionFactory.GetNewSession() en C:\Documents and
setting...@d!a\mis documentos\Visual Studio 2008\Projects\PruebaNH
\Entidades\SessionFactory.cs:línea 33
       en Persistencia.PersonaDAL.AnadirPersona(Persona persona) en C:
\Documents and setting...@d!a\mis documentos\Visual Studio
2008\Projects\PruebaNH\Persistencia\PersonaDAL.cs:línea 24
       en Presentacion.Pantalla.button1_Click(Object sender, EventArgs
e) en C:\Documents and setting...@d!a\mis documentos\Visual Studio
2008\Projects\PruebaNH\Presentacion\Pantalla.cs:línea 33
       en System.Windows.Forms.Control.OnClick(EventArgs e)
       en System.Windows.Forms.Button.OnClick(EventArgs e)
       en System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       en System.Windows.Forms.Control.WmMouseUp(Message& m,
MouseButtons button, Int32 clicks)
       en System.Windows.Forms.Control.WndProc(Message& m)
       en System.Windows.Forms.ButtonBase.WndProc(Message& m)
       en System.Windows.Forms.Button.WndProc(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.OnMessage
(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.WndProc
(Message& m)
       en System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr
hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW
(MSG& msg)
       en
System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop
(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       en
System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner
(Int32 reason, ApplicationContext context)
       en System.Windows.Forms.Application.ThreadContext.RunMessageLoop
(Int32 reason, ApplicationContext context)
       en System.Windows.Forms.Application.Run(Form mainForm)
       en Presentacion.Program.Main() en C:\Documents and setting...@d!
a\Mis documentos\Visual Studio 2008\Projects\PruebaNH\Presentacion
\Program.cs:línea 18
       en System.AppDomain._nExecuteAssembly(Assembly assembly, String
[] args)
       en System.AppDomain.ExecuteAssembly(String assemblyFile,
Evidence assemblySecurity, String[] args)
       en
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       en System.Threading.ThreadHelper.ThreadStart_Context(Object
state)
       en System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state)
       en System.Threading.ThreadHelper.ThreadStart()
  InnerException: NHibernate.MappingException
       Message="persistent class Entidades.Persona, Persona not found"
       Source="NHibernate"
       StackTrace:
            en
NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String
fullName, String errorMessage)
            en NHibernate.Cfg.XmlHbmBinding.Binder.ClassForNameChecked
(String name, Mappings mappings, String errorMessage)
            en NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindClass
(XmlNode node, IDecoratable classMapping, PersistentClass model,
IDictionary`2 inheritedMetas)
            en NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind
(XmlNode node, HbmClass classSchema, IDictionary`2 inheritedMetas)
            en
NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddRootClasses(XmlNode
parentNode, IDictionary`2 inheritedMetas)
            en NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind
(XmlNode node)
            en NHibernate.Cfg.Configuration.AddValidatedDocument
(NamedXmlDocument doc)
       InnerException: System.IO.FileNotFoundException
            Message="No se puede cargar el archivo o ensamblado
'Persona' ni una de sus dependencias. El sistema no puede hallar el
archivo especificado."
            Source="mscorlib"
            FileName="Persona"
            FusionLog="=== Información de estado anterior al enlace ===
\r\nLOG: Usuario = nadia...@d!a\r\nlog: DisplayName = Persona\n
(Partial)\r\nLOG: Appbase = file:///C:/Documents and Settings/n...@d!a/
Mis documentos/Visual Studio 2008/Projects/PruebaNH/Presentacion/bin/
Debug/\r\nLOG: PrivatePath inicial = NULL\r\nEnsamblado de llamada :
NHibernate, Version=2.1.0.4000, Culture=neutral,
PublicKeyToken=aa95f207798dfdb4.\r\n===\r\nLOG: Este enlace empieza en
el contexto de carga default.\r\nLOG: Utilización del archivo de
configuración de la aplicación: C:\\Documents and settings...@d!a\\mis
documentos\\Visual Studio 2008\\Projects\\PruebaNH\\Presentacion\\bin\
\Debug\\Presentacion.vshost.exe.config\r\nLOG: Utilizando el archivo
de configuración del equipo en C:\\WINDOWS\\Microsoft.NET\\Framework\
\v2.0.50727\\config\\machine.config.\r\nLOG: La directiva no se está
aplicando a la referencia en este momento (enlace de ensamblado
privado, personalizado, parcial o basado en la ubicación).\r\nLOG: Ya
se detectó el mismo enlace, que generó un error hr = 0x80070002.\r\n"
            StackTrace:
                 en System.Reflection.Assembly._nLoad(AssemblyName
fileName, String codeBase, Evidence assemblySecurity, Assembly
locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound,
Boolean forIntrospection)
                 en System.Reflection.Assembly.nLoad(AssemblyName
fileName, String codeBase, Evidence assemblySecurity, Assembly
locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound,
Boolean forIntrospection)
                 en System.Reflection.Assembly.InternalLoad
(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark&
stackMark, Boolean forIntrospection)
                 en System.Reflection.Assembly.InternalLoad(String
assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark,
Boolean forIntrospection)
                 en System.Reflection.Assembly.Load(String
assemblyString)
                 en NHibernate.Util.ReflectHelper.TypeFromAssembly
(AssemblyQualifiedTypeName name, Boolean throwOnError)
                 en NHibernate.Util.ReflectHelper.ClassForName(String
name)
                 en
NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String
fullName, String errorMessage)
            InnerException:



Mi archivo de mapeo (Como veran una clase bien básica :) )

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Persona" namespace="Entidades" >
        <class name="Persona" table="Persona" lazy="false">
                <id name="Id" column="id" unsaved-value="0" type="Int32">
                        <generator class="identity"/>
                </id>
                <property name="TipoDoc" column="tipoDoc" not-null="true"
type="System.Int32"/>
                <property name="Nombre" column="nombre" not-null="true"/>
                <property name="Apellido" column="apellido" not-null="true"/>
                <property name="FechaNacimiento" column="fechaNacimiento"
type="System.DateTime" not-null="true" />

                <property name="NroDoc" column="nroDoc" not-null="true"/>
                <property name="Telefono" column="telefono" not-null="false"/>
                <property name="Domicilio" column="domicilio" not-null="false" 
/>
        </class>
</hibernate-mapping>

Que hace referencia a:

namespace Entidades
{
    public class Persona
    {
        private int _id;
        private DateTime _fechaNacimiento;
        private int _tipoDoc;
        private string _nroDoc;
        private string _nombre;
        private string _apellido;
        private string _domicilio;
        private string _telefono;
       public int Id
        {
          ...... (aca declaro las public)......
    }
}

En el app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
        <configSections>
                <section name="hibernate-configuration"
                type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
        </configSections>
        <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
                <session-factory>
                        <property name="connection.provider">
                                NHibernate.Connection.DriverConnectionProvider
                        </property>
                        <property name="dialect">
                                NHibernate.Dialect.MsSql2005Dialect
                        </property>
                        <property name="connection.driver_class">
                                NHibernate.Driver.SqlClientDriver
                        </property>
                        <property name="connection.connection_string">
                                Data Source=NADIA\SQLEXPRESS;Initial 
Catalog=DBPersonas;Integrated
Security=True
                        </property>
                        <property name='proxyfactory.factory_class'>
                                NHibernate.ByteCode.Castle.ProxyFactoryFactory,
NHibernate.ByteCode.Castle
                        </property>
                </session-factory>
        </hibernate-configuration>
</configuration>


Y el problema aparece cuando quiero guardar una nueva persona, llega
al SessionFactory y:
namespace Entidades
{
 public class SessionFactory
    {

            private static NHibernate.ISessionFactory _SessionFactory;

            private static void Init()
            {
                NHibernate.Cfg.Configuration config;
                config = new NHibernate.Cfg.Configuration();
                config.Configure();
                config.AddAssembly("Entidades");
------------------------> ACA APARECE EL ERROR
                _SessionFactory = config.BuildSessionFactory();
            }



MUCHAS GRACIAS POR SU TIEMPO!!!!!!!!!!!!!!

 
Nadia

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