2010-11-05 5 views
1

Comment écrire des requêtes HQL en utilisant NHibernate. Quels espaces de noms devrai-je inclure pour que tout fonctionne bien. En fait, j'ai 2 tables Ticket and Trip et je veux un compte de tous les enregistrements dans Trip qui n'ont pas d'entrée correspondante dans Ticket. Il y a un champ Tid dans le ticket qui réorganise l'identifiant du voyage. Quelqu'un peut-il m'expliquer dès le début comment vais-je écrire une requête NHibernate HQL pour cela?NHibernate requêtes HQL

+0

Avez-vous essayé la recherche google pour cela? –

+0

... ou en lisant les docs ... –

Répondre

3

Vous n'avez pas besoin d'espaces de noms spéciaux pour utiliser HQL. Créez simplement un projet NHibernate simple et vous pouvez commencer à écrire HQL tout de suite.

Voici un exemple du nouveau NHibernate 3.0 Cookbook et vous devriez également consulter le livre Nhibernate in Action qui contient des exemples plus détaillés sur HQL.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using NHibernate.Cfg; 
using NHibernate; 

namespace ExecutableHQL 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     log4net.Config.XmlConfigurator.Configure(); 
     var nhConfig = new Configuration().Configure(); 
     var sessionFactory = nhConfig.BuildSessionFactory(); 

     using (var session = sessionFactory.OpenSession()) 
     { 
     using (var tx = session.BeginTransaction()) 
     { 
      int count = (int) session.CreateQuery("select count(*) from Trip").UniqueResult(); 

      tx.Commit(); 
     } 
     } 
    } 
    } 
} 
0
[HttpGet] 
    public int GetCount() 
    { 
     var myQuery = session.CreateQuery(@" 
     select COUNT(*) from Table as t where 
     t.Id = :Id"); 
     myQuery.SetParameter("Id", this.Id); 
     int count = Convert.ToInt32(myQuery.UniqueResult()); 
     return count; 
    }