Hola Nadia, probá simplificando el mapping... algo así:
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Persona"
namespace="Entidades" >
       <class name="Persona">
               <id name="Id">
                       <generator class="identity"/>
               </id>
               <property name="TipoDoc" not-null="true"/>
               <property name="Nombre" not-null="true"/>
               <property name="Apellido" not-null="true"/>
               <property name="FechaNacimiento" not-null="true" />
               <property name="NroDoc" not-null="true"/>
               <property name="Telefono"/>
               <property name="Domicilio"/>
       </class>
</hibernate-mapping>

2009/9/23 n...@dia <[email protected]>

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