Modifica lo siguiente
- La propiedad id que definiste al final pasala al principio del mapping.
Tambien puedes dejarlo mas simple
<id name="MusicianId" column="Musician_id">
<generator class="identity" />
</id>
- También tu clase Musician lo podrías especificarlo con su namespace
cualificado
<class name="[NAMESPACE][.]Musician, Musician" table="musician" lazy="true"
>
- Las propiedades en tu clase se deben llamar igual como en el mapping, tal
cual.
- Define las propiedades como virtuales en tu clase con privates no va
andar nhibernate
- También no olvides que el hbm lo tienes que poner como recurso embebido
No olvides poner en el archivo config la declaracion de seccion de
nhibernate
<configuration>
<configSections>
<section name="hibernate-configuration"
type="NHibernate.Cfg.ConfigurationSectionHandler,
NHibernate" />
</configSections>
....
Saludos
El 5 de febrero de 2013 19:07, Carlos Berdejo
<[email protected]>escribió:
> Buenas tardes,
>
> Estoy programando en c# con monodevelop, cada vez que trato hacer una
> consulta, me marca un excepcion no tengo idea de por donde buscar para
> corregirlo.
> Me pueden dar alguna sugerencia.
>
> *NHibernate.MappingException: Could not compile the mapping document:
> */home/carlos/Escritorio/mono/castor/castor/Models/Mappings/Musician.hbm.xml
> ---> *System.Exception: XML declaration cannot appear in this state*
>
> *Web.config:*
> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
> <session-factory>
> <property
> name="dialect">NHibernate.Dialect.PostgreSQLDialect</property>
> <property
> name="connection.connection_string">Server=192.168.119.231;Database=test;User
> ID=castor;Password=castor;</property>
> <property name="current_session_context_class">web</property>
> <property name="show_sql">true</property>
> <mapping assembly="castor" />
> </session-factory>
> </hibernate-configuration>
>
> *Musician.hbm.xml:*
> <?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping assembly="castor" namespace="castor.core"
> xmlns="urn:nhibernate-mapping-2.2">
> <class name="Musician" table="musician" lazy="true" >
> <property name="BirthYear">
> <column name="birth_year" sql-type="integer" not-null="false" />
> </property>
> <property name="MusicianName">
> <column name="musician_name" sql-type="text" not-null="false" />
> </property>
> <property name="FavoriteInstrument">
> <column name="favorite_instrument" sql-type="text" not-null="false"
> />
> </property>
> <id name="MusicianId">
> <generator class="identity" />
> <column name="Musician_id" sql-type="integer" not-null="true" />
> </id>
> </class>
> </hibernate-mapping>
>
> *Musician.cs:*
> using System;
> using System.Text;
> using System.Collections.Generic;
> using System.Xml;
>
>
> namespace castor.core {
> public class Musician {
> private int musicianId;
> private int birthYear;
> private string musicianName;
> private string favoriteInstrument;
> public Musician() { }
> }
> }
>
> *NhibernateHelper.cs:*
> static NHibernateHelper()
> {
> // Get the mapping file path
> String mappingPath =
> HttpContext.Current.Server.MapPath("/Models/Mappings/");
> // Setup the configuration
> Configuration config = new Configuration()
> .AddFile(mappingPath + "Musician.hbm.xml");
> // Build the session factory
> sessionFactory = config.BuildSessionFactory();
> }
>
> --
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
> ---
> Has recibido este mensaje porque estás suscrito al grupo
> "NHibernate-Hispano" de Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus correos
> electrónicos, envía un correo electrónico a
> [email protected].
> Para obtener más opciones, visita https://groups.google.com/groups/opt_out
> .
>
>
>
--
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
---
Has recibido este mensaje porque estás suscrito al grupo "NHibernate-Hispano"
de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos
electrónicos, envía un correo electrónico a
[email protected].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.