Blog Stats
  • Posts - 8
  • Articles - 5
  • Comments - 5127
  • Trackbacks - 5

 

Configuriamo i file XML per NHibernate (II° Parte) .

Nella scorsa lezione abbiamo visto quali sono le classi e le tabelle del database, ora vedremo come scrivere correttamente i file XML per NHibernate che avranno il nome %nomeclasse%.hbm.xml.

Queste le regole generali per scrivere correttamente un file XML di NHibernate:


<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" >
 <class name="%nomeclasse%, %namespace%" table="%tabella sul database%">
  <id name="%nome proprietà sulla classe%" column="%nome del campo di chiave primaria%" unsaved-value="%valore di default per record non salvati%" >
   <generator class="native" />
  </id>
  <property name="%nome proprietà sulla classe%" column="%nome del campo su database%" type="%tipo di campo su database%"/>
<!-- RELAZIONE MOLTI A MOLTI -->
  <set name="%nome proprietà sulla classe%" table="%tabella di associazione%" cascade="none" lazy="false" inverse="false">
   <key column="%colonna di associazione della tabella padre%" />
   <many-to-many column="%colonna di associazione della tabella figlia" class="%classe di ritorno%, %namespace%" />
  </set>
 </class>
</hibernate-mapping>

Quindi i nostri file XML, sapendo che il namespace l'abbiamo nominato DanieleRuggeri diventerà:

User.nbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" default-access="property">
 <class name="DanieleRuggeri.User, DanieleRuggeri" table="utenti">
  <id name="ID" column="idutenti" unsaved-value="0" >
   <generator class="native" />
  </id>
  
  <property name="Username" />
  <property name="Pwd" />
  <property name="Email" />
  <property name="Scadenza" column="dtscadenza" type="Date"/>
  <set name="Roles" table="utenti_gruppi" cascade="none" lazy="false" inverse="false" order-by="idgruppi">
   <key column="idutenti" />
   <many-to-many column="idgruppi" class="DanieleRuggeri.Role, DanieleRuggeri" />
  </set>
  


 </class>
</hibernate-mapping>


Role.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
 <class name="DanieleRuggeri.Role, DanieleRuggeri.DLL" table="gruppi">
  <id name="ID" column="idgruppi" unsaved-value="0">
   <generator class="native" />
  </id>
  
  <property name="Description" column="descrizione" />
 </class>
</hibernate-mapping>

Le classi invece saranno scritte come segue:

User

using System;
using System.Collections;
using Iesi.Collections;
namespace DanieleRuggeri
{
 public class User
 {
  private int _ID;
  private string _Username;
  private string _Pwd;
  private string _Email;
  private DateTime _Scadenza;
  private Iesi.Collections.ISet   _Roles; //collezione di gruppi

  
  public User()
  {
   _ID =0;
   _Username=null;
   _Pwd=null;
   _Email=null;
   _Scadenza =new DateTime(2000,01,01);
   //_Roles = new Hashtable();
   
  }
  
  public int ID
  {
   get{return _ID;}
   set{_ID =value;}
  }
  public string Username
  {
   get{return _Username;}
   set{_Username =value;}
  }
  public string Pwd
  {
   get{return _Pwd;}
   set{_Pwd =value;}
  }
  public string Email
  {
   get{return _Email;}
   set{_Email =value;}
  } 
  public DateTime Scadenza
  {
   get{return _Scadenza;}
   set{_Scadenza =value;}
  } 
  
  public Iesi.Collections.ISet   Roles
  {
   get{return _Roles;}
   set{_Roles=value;}   
  }
 
 }
  
}

Role


using System;
using System.Collections ;

namespace DanieleRuggeri
{
 ///


 /// Description of Role.
 ///

 public class Role
 {
  private int _ID;
  private string _Description;

  
  public Role()
  {
   _ID=0;
   _Description =null;
  }
  public int ID
  {
   get{return this._ID;}
   set{this._ID=value;}
  }
  public string Description
  {
   get{return this._Description;}
   set{this._Description=value;}
  }
   
  
  
  
  

  
  
 }
}

Comments have been closed on this topic.
 

 

Copyright © Daniele Ruggeri