Implémenter la persistance de données avec le framework ORM Fluent NHibernate
Temps approximatif : 1 heure et 8 minutes
NHibernate est un ORM open source, un framework de mapping objet-relationnel qui sert à mapper les classes objets C# du model avec les tables d'une base de données relationnelle
Le mapping objet dans NHibernate se fait à l'aide de fichiers xml mais ici nous allons faire le mapping avec Fluent NHibernate
Cher développeur csharp, Vous êtes Prêts ?
1 - Créer une Application Windows Form
2 - Créer une interface simple avec les objets suivants
txtId, txtNom, txtPrenom, txtAge
btnCharger, btnInserer, btnModifier
dgView
3 - Créer une base de données DB_TEST et une table PRS_PERSONNE
4 - Ajouter les répertoires suivants
Ajouter les 3 répertoires suivants dans l'arborescence du projet :
Forms
Mappings
Model
5 - Déplacer Form1 dans le répertoire Forms
Renommer Form1 en frmFraterie et Déplacer-la dans le répertoire Forms
6 - Installer et référencer NHibernate
Installer le deux packages suivants avec Nuget Package Manager :
(clique droit sur référence/gérer les packages nuget)
- NHibernate 4.1.1.4000 (par NHibernate Comunity) 4 millions de téléchargements
- FluentNHibernate (par James Gregory) version 2.0.2
7 - Ajouter la classe de définition Personne.cs dans Model
namespace Fraterie.Model
{
public class Personne
{
public virtual int Id { get; set; }
public virtual string Nom { get; set; }
public virtual string Prenom { get; set; }
public virtual int Age { get; set; }
}
}
8 - Réaliser le mapping des entités
Ici nous avons une seule entité et elle s'appelle : Personne
Ajouter la classe de mapping PersonneMapping.cs dans le répertoire Mappings
using FluentNHibernate.Mapping;
namespace Fraterie.Mappings
{
public class PersonneMapping:ClassMap<Model.Personne>
{
public PersonneMapping()
{
Id( x => x.Id );
Map( x => x.Nom ).Not.Nullable();
Map( x => x.Prenom ).Not.Nullable();
Map( x => x.Age ).Not.Nullable();
Table("PRS_PERSONNE");
}
}
}
9 - Ajouter à la racine du projet une classe SessionFactory.cs
using FluentNHibernate.Automapping;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
namespace Fraterie
{
public class SessionFactory
{
private static volatile ISessionFactory iSessionFactory;
private static object syncRoot = new object();
public static ISession OpenSession
{
get
{
if (iSessionFactory == null)
{
lock (syncRoot)
{
if (iSessionFactory == null)
{
iSessionFactory = BuildSessionFactory();
}
}
}
return iSessionFactory.OpenSession();
}
}
}
}
10 - Changer la portée de la classe Program.cs
Nous allons dans Program.cs pour changer la déclaration de la classe de static vers public
public class Program
11 - Ajouter system.configuration
Nous allons faire un clique droit sur références pour ajouter system.configuration
12 - Créer BuildSessionFactory()
Nous allons ajouter la fonction BuildSessionFactory() dans SessionFactory
Pour faire la mise à jour nous avons besoin de charger les données par un clique dans le data grid pour récupérer l'id de l'élément à mettre à jour :
private void dgView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dgView.RowCount <= 1 || e.RowIndex < 0)
return;
string id = dgView[0, e.RowIndex].Value.ToString();
if (id == "")
return;
IList<Model.Personne> personneInfo = getDataFromFraterie(id);
txtId.Text = personneInfo[0].Id.ToString();
txtNom.Text = personneInfo[0].Nom.ToString();
txtPrenom.Text = personneInfo[0].Prenom.ToString();
txtAge.Text = personneInfo[0].Age.ToString();
}
private IList<Model.Personne> getDataFromFraterie(string id)
{
ISession session = SessionFactory.OpenSession;
using (session)
{
using (ITransaction transaction = session.BeginTransaction())
{
try
{
IQuery query = session.CreateQuery("From Personne where id = '" + id + "'");
return query.List<Model.Personne>();
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
throw ex;
}
}
}
}
Voilà cher développeur C# vous savez maintenant implémenter la persistance de données avec Fluent NHibernate !
Regardez cette vidéo pour vous remémorer ces étapes ou Télécharger le code source Attention : Vous devez restaurer les packages NuGet (Ouvrez NuGet Package Manager et cliquez sur Restaurer)
Commentaires
Développé par Developpeur-Csharp.com Mentions légales
Testé et compatible, à partir de : Firefox 3, Internet Explorer 7.0, Safari 4, Chrome, et Opera 9.