<many-to-one name="Uf" column="ID_UF" class="UnidadeFederativa" cascade="none" lazy="false"
foreign-key="fk_uf"/>Índices
Outra reclamação recorrente é quanto aos índices. Alguns DBAs preferem criar eles mesmos este tipo de coisa, mas quando você sabe que vai precisar de um índice, é bom definir no próprio mapeamento. Se você quer criar um índice de uma única coluna, pode fazer assim:
<property name="Nome" column="NOME" type="string" length="50" not-null="true"
index="idx_cidade_nome"/>
Chave Única
Chaves únicas também são características comuns da maioria dos bancos de dados, e que podemos definir de forma genérica no NHibernate. Se você quer definir uma coluna como chave única, pode fazer assim:
<property name="CodigoMunicipio" column="CODIGO" type="string" length="10" not-null="true"
unique="true" /><property name="Nome" column="NOME" type="string" length="50" not-null="true"
unique-key="uk_CodigoNome" />
<property name="CodigoMunicipio" column="CODIGO" type="string" length="10" not-null="true"
unique-key="uk_CodigoNome" />Listagem 1. Mapeamento completo
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Dominio" namespace=" Dominio.Entidades" >
<class name="Cidade" table="CIDADE" lazy="false">
<id name="Id" column="ID_CIDADE" unsaved-value="0">
<generator class="native"/>
</id>
<property name="Nome" column="NOME" type="string" length="50" not-null="true"
index="idx_cidade_nome"/>
<property name="CodigoMunicipio" column="CODIGO" type="string" length="10"
not-null="true" unique="true" />
<many-to-one name="Uf" column="ID_UF" class="UnidadeFederativa" cascade="none"
lazy="false" foreign-key="fk_uf"/>
</class>
</hibernate-mapping>