Accueil > Forum > > > > nhibernate, sql serer 2005 et c#
nhibernate, sql serer 2005 et c#
mardi 18 novembre 2008 à 17:50:22 |
nhibernate, sql serer 2005 et c#

laymouna98
|
salut à tous 
je souhaite savoir comment je peut récupérer la dernière enregistrement d'une table de la base de données je travail avec Nhibernate, C# et Sql server 2005
merci pour votre aide
|
|
mercredi 19 novembre 2008 à 10:11:45 |
Re : nhibernate, sql serer 2005 et c#

yannickiwi
|
Salut,
Je ne connais pas Nhibernate, mais il me semble que dans les requete SQL (donc en touchant linq pour c#), tu as une fonction pour récupéré le dernier enregistrement de ce style: var p = (from c in taTable select new { Nom = c.lastName, Prenom = c.firstName }.Last() );
En espérant avoir pu t'aider !
|
|
mercredi 19 novembre 2008 à 10:12:17 |
Re : nhibernate, sql serer 2005 et c#

yannickiwi
|
var p = (from c in taTable select new { Nom = c.lastName, Prenom = c.firstName }).Last());
Désolé, je t'ai donné une mauvaise requête avant ;)
|
|
vendredi 9 avril 2010 à 16:38:18 |
Re : nhibernate, sql serer 2005 et c#

Riddenbest
|
BONJOUR TOUT LE MONDE ,
je suis débutant en NHibernate je commence ma premiere application en C# et SQL Server 2005 j'utilise NHibernate comme je vient le mentionner au début lorsque je compile mon application il ya une exeception qui m'affiche [NHibernate.Mappingexception:Could not instanciate Dialect Class ....]s'il y a une presonne qui peut m'aider n'haisitez pas c'est urgent pour moi
Merci d'avance !!
voici les fichier de mon projet:
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section
name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"
/>
</configSections>
<!-- Sélectionnez le type de base de donnée à utiliser et définissez sa ChaîneDeConnexion -->
<!-- Valeurs possibles: Access, MSSQL ou MySQL -->
<appSettings>
<add key="BaseDeDonnées" value="MSSQL" />
<add key="Access.ChaîneDeConnexion" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=nhibernate.mdb" />
<add key="MSSQL.ChaîneDeConnexion" value="server = ETUDIANT-29A138;Initial Catalog=Base_test;Integrated Security=SSPI" />
<add key="MySQL.ChaîneDeConnexion" value="Server=localhost;Database=nhibernate;User ID=root;Password=" />
</appSettings>
<!-- Cette section contient les informations nécessaires à la configuration de log4net -->
<log4net>
<!-- Définie une sortie (où les textes de débogage peuvent aller) -->
<appender name="SortieVersUnFichier" type="log4net.Appender.FileAppender, log4net">
<param name="File" value="log.txt" />
<param name="AppendToFile" value="false" />
<layout type="log4net.Layout.PatternLayout, log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n" />
</layout>
</appender>
<!-- Définie la catégorie racine, son niveau de priorité par défaut et ajoute le(s) sortie(s) (où les textes de débogage vont aller) -->
<root>
<priority value="WARN" />
<appender-ref ref="SortieVersUnFichier" />
</root>
<!-- Spécifie le niveau de certain namespaces -->
<!-- Le niveau peut être : ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF -->
<logger name="NHibernate">
<level value="INFO" />
</logger>
</log4net>
</configuration>
DBase_Connection.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate.Cfg;
using NHibernate.Mapping.Attributes;
using log4net;
using NHibernate_testC1.Domain;
namespace NHibernate_testC1
{
class DBase_connection
{private NHibernate.ISessionFactory _sessionFactory;
/// <summary> Configuration de l'accès à la base de données. </summary>
public DBase_connection(string baseDeDonnées, string chaîneDeConnexion)
{
System.Console.Out.WriteLine("Configuration de NHibernate...\n");
// Active l'inscription des informations de débogages sur les opérations de NHibernate
log4net.Config.XmlConfigurator.Configure();
// Crée l'objet qui contiendras les informations de configuration
// et assigne les informations pour accéder à la base de données
NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();
cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionProvider, "NHibernate.Connection.DriverConnectionProvider");
System.Console.Out.WriteLine("Utilise la base de données: <" + baseDeDonnées
+ ">\nChaîneDeConnexion: <" + chaîneDeConnexion + ">\n");
if("Access" == baseDeDonnées)
{
cfg.SetProperty(NHibernate.Cfg.Environment.Dialect, "NHibernate.JetDriver.JetDialect, NHibernate.JetDriver");
cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionDriver, "NHibernate.JetDriver.JetDriver, NHibernate.JetDriver");
}
else if("MSSQL" == baseDeDonnées)
{
cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionProvider, "NHibernate.Connection.DriverConnectionProvider");
cfg.SetProperty(NHibernate.Cfg.Environment.Dialect, "NHibernate.Dialect.MsSql2005Dialect");
cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionDriver, "NHibernate.Driver.SqlClientDriver");
}
else if("MySQL" == baseDeDonnées)
{
cfg.SetProperty(NHibernate.Cfg.Environment.Dialect, "NHibernate.Dialect.MySQLDialect");
cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionDriver, "NHibernate.Driver.MySqlDataDriver");
}
else
throw new System.InvalidOperationException("La base de données '" + baseDeDonnées + "' est inconnue.");
cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionString, chaîneDeConnexion);
// Utilise NHibernate.Mapping.Attributes pour créer les informations sur les entités
System.IO.MemoryStream flux = new System.IO.MemoryStream(); // Contenant des informations
NHibernate.Mapping.Attributes.HbmSerializer.Default.Validate = true; // Active la validation (optionnel)
// Demande à NHibernate d'utiliser les champs et non les propriétés (dans les entités)
NHibernate.Mapping.Attributes.HbmSerializer.Default.HbmDefaultAccess = "field.camelcase-underscore";
// Récupère les informations à partir de cette assemblée (peut aussi être fait classe par classe)
System.Console.Out.WriteLine("NHibernate.Mapping.Attributes.HbmSerializer.Default.Serialize()...\n");
NHibernate.Mapping.Attributes.HbmSerializer.Default.Serialize(flux, System.Reflection.Assembly.GetExecutingAssembly());
flux.Position = 0;
cfg.AddInputStream(flux); // Envoi les informations de Mappage à la Configuration de NHibernate
flux.Close();
// Créé le(s) table(s) dans la base de données pour les entités
System.Console.Out.WriteLine("new NHibernate.Tool.hbm2ddl.SchemaExport(cfg).Create()...");
new NHibernate.Tool.hbm2ddl.SchemaExport(cfg).Create(true, true);
// Construit la "fabrique de sessions"
System.Console.Out.WriteLine("\n\nsessionFact = cfg.BuildSessionFactory();\n\n");
_sessionFactory = cfg.BuildSessionFactory();
}
/// <summary> Création et enregistrement de 'n' commandes aléatoires. </summary>
public void GénèreDesUtilisateursAléatoires(int n)
{
NHibernate.ISession session = null;
NHibernate.ITransaction transaction = null;
System.Console.Out.WriteLine("\nEnregistrement de " + n + " commandes aléatoires...");
try
{
session = _sessionFactory.OpenSession();
transaction = session.BeginTransaction();
for(int i=0; i<n; i++)
{
Users u = new Users();
u.Nom = "Ben Ahmed";
u.Prenom = "Raed";
session.Save(u);
}
// Envoie les modifications (=> Génère et exécute les requêtes)
transaction.Commit();
}
catch
{
if(transaction != null)
transaction.Rollback(); // Erreur => nous DEVONT annuler les modifications
throw; // Ici, nous renvoyons la même exception pour qu'elle soit gérée (imprimée)
}
finally
{
if(session != null)
session.Close();
}
}
/// <summary> Pour chaque commande (dans la base de données), impression de son identificateur, sa date et le nom du produit. </summary>
public void AfficheToutesLesUtilisateurs()
{
using(NHibernate.ISession session = _sessionFactory.OpenSession())
{
System.Collections.IList résultat = session.Find("select u.Id, u.Nom, u.Prenom from Users u");
System.Console.Out.WriteLine("\n" + résultat.Count + " utilisateurs trouvées!");
foreach(System.Collections.IList l in résultat)
System.Console.Out.WriteLine(" Utilisateur N°"
+ l[0] + ", Nom=" + l[1] + ", Prernom=" + l[2]);
} // finally { session.Close(); } est réalisé par using()
}
/// <summary> Renvoi de la commande N° 'id'. </summary>
public Users ChargeUnUtilisateur(int id)
{
System.Console.Out.WriteLine("\nChargement de l'Utilisateur N° " + id + "...");
using(NHibernate.ISession session = _sessionFactory.OpenSession())
return session.Load(typeof(Users), id) as Users;
// finally { session.Close(); } est réalisé par using()
}
/// <summary> Affichage de la commande sur la console. </summary>
public void Affiche(Users u)
{
System.Console.Out.WriteLine("\nUser N°"
+ u.Id + "\n Nom = " + u.Nom + "\n Prenom=" + u.Prenom);
}
/// <summary> Insertion ou mise à jour de la commande (dans la base de données). </summary>
public void Sauvegarde(Users u)
{
NHibernate.ISession session = null;
NHibernate.ITransaction transaction = null;
// Voici comment la Session décide d'insérer ou de mettre à jour; utilisez NHMA.Id(UnsavedValue=x) pour remplacer 0
System.Console.Out.Write("\n" + (u.Id == 0 ? "Insertion" : "Mise à jour"));
System.Console.Out.WriteLine(" l'Utilisateur N° " + u.Id + "...");
try
{
session = _sessionFactory.OpenSession();
transaction = session.BeginTransaction();
// La Session NHibernate vas automatiquement détecter si elle doit effectuer un INSERT ou un UPDATE
session.SaveOrUpdate(u);
// Envoie les modifications (=> Génère et exécute les requêtes)
transaction.Commit();
}
catch
{
if(transaction != null)
transaction.Rollback(); // Erreur => nous DEVONT annuler les modifications
throw; // Ici, nous renvoyons la même exception pour qu'elle soit gérée (imprimée)
}
finally
{
if(session != null)
session.Close();
}
}
/// <summary> Effacement de la commande (dans la base de données). </summary>
public void Détruit(int id)
{
NHibernate.ISession session = null;
NHibernate.ITransaction transaction = null;
System.Console.Out.WriteLine("\nEffacement de l'Utilisateur N° " + id + "...");
try
{
session = _sessionFactory.OpenSession();
transaction = session.BeginTransaction();
session.Delete("from Users where u.Id = :Id", id, NHibernate.NHibernateUtil.Int32);
// Envoie les modifications (=> Génère et exécute les requêtes)
transaction.Commit();
}
catch
{
if(transaction != null)
transaction.Rollback(); // Erreur => nous DEVONT annuler les modifications
throw; // Ici, nous renvoyons la même exception pour qu'elle soit gérée (imprimée)
}
finally
{
if(session != null)
session.Close();
}
}
}
}
Users.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate.Mapping.Attributes;
namespace NHibernate_testC1.Domain
{
[NHibernate.Mapping.Attributes.Class(Table = "Users")]
class Users
{
private int _id = 0;
private string _Nom;
private string _Prenom;
[NHibernate.Mapping.Attributes.Id(Name = "Id")]
[NHibernate.Mapping.Attributes.Generator(1, Class = "native")]
public virtual int Id
{
get { return _id; }
}
[NHibernate.Mapping.Attributes.Property]
public virtual string Nom
{
get { return _Nom; }
set { _Nom = value; }
}
[NHibernate.Mapping.Attributes.Property]
public virtual string Prenom
{
get { return _Prenom; }
set { _Prenom = value; }
}
public Users(string nom, string prenom)
{
this.Nom = nom;
this.Prenom = prenom; // Ne pas utiliser _prenom
}
public Users()
{
}
}
}
Users.hbm.XML
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="NHibernate_testC1"
namespace="NHibernate_testC1.Domain">
<!-- more mapping info here -->
<class name="Users" table="Users" dynamic-update="true">
<id name="ID" type="Int32">
<generator class="identity" />
</id>
<property name="Nom" column="Nom" type="String"/>
<property name="Prenom" column="Prenom" type="String"/>
</class>
</hibernate-mapping>
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net.Config;
using NHibernate_testC1.Domain;
namespace NHibernate_testC1
{
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
class Program
{
static void Main(string[] args)
{
System.Console.Out.WriteLine("L'application démarre...\n");
try
{
string baseDeDonnées = System.Configuration.ConfigurationSettings.AppSettings["BaseDeDonnées"];
string chaîneDeConnexion = System.Configuration.ConfigurationSettings.AppSettings[baseDeDonnées + ".ChaîneDeConnexion"];
DBase_connection DB = new DBase_connection(baseDeDonnées, chaîneDeConnexion);
DB.GénèreDesUtilisateursAléatoires(3);
DB.AfficheToutesLesUtilisateurs();
}
catch (System.Exception ex)
{
System.Console.Error.WriteLine("\n\n" + ex.ToString() + "\n\n");
System.Threading.Thread.Sleep(30000);
}
finally
{
System.Console.Out.WriteLine("\nL'application est fermée!\n");
System.Threading.Thread.Sleep(30000);
}
}
}
}
S'il vous plais je suis en attente répndez moi par la correction et ce ke je dois faire.
Merci ;)
|
|
Cette discussion est classée dans : sql, nhibernate, serer
Répondre à ce message
Sujets en rapport avec ce message
nhibernate et base de données [ par laymouna98 ]
Bonjour désolée, j'ai posée cet question pas mal de fois, mais par ce que je suis vraiment besoin de votre aides. j'ai travaillée une application
NHibernate et sql server 2005 [ par ymas00 ]
Bonjour, Je veux savoir si NHibernate peut il créer automatiquement les tables dans la base de données après la génération ??? j'ai trouvé pas mal d'
Linq to Sql, problème de maj avec paramètre [ par Achm ]
Bonjour ! J'ai un petit souci pour mettre à jours mes données : J'ai une fonction : [code=cs]public void UpdateData(Guid id, string nom) {
Decimal, float, double... en C# avec SQL Server [ par 0nn2belle ]
Bonsoir tout le monde, Je suis débutante en c# et je suis confrontée à un problème que j'ai déjà rencontré, mais... en JAVA ! Et je suis perdue dans m
Importation/Exportation base de données SQL via Webservices. [ par S1rK ]
Bonjour à tous, Dans le cadre d'un projet visant à synchronisé les bases de données d'un PDA(SQL CE) avec un PC(SQL) je souhaite utilisé les « web se
Rechercher dans une base de donnée SQL [ par milawadie ]
Bonjour tout le monde,je suis entrain de développer mon projet fin d'étude avec c Sharp,je cherche le code source du bouton (Rechercher) qui me permet
Requête SQL Comparative [ par BergerDoc ]
Bonjour, je cherche à effectuer une requete sur une base de donnée Access qui compare la date actuelle entre deux dates entrées dans la base : dateHe
Comment afficher résultats d'une requête [ par hollowman010 ]
Bonjour à tous, Je suis venu vous demandez de l'aide pour un "petit" problème. [i][b][u]Présentation générale :[/u][/b][/i] Une base de donné
application multiposte avec SQL Server Express [ par Yoshifumi ]
Bonjour à tous, Je développe actuellement une application en C# avec Visual Studio 2008 (débutant). Ce programme utilise une base de données SQL Serv
Création des tables SQL Server à partir des DataTable [ par bellak ]
Bonjour a tous , SVP , J'ai des DataTable que j les crée dynamiquement par code et je voudrais créer des tables base de données SQL Server, ce qui co
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|