2011-07-25 2 views
0

Dans mon code, Alors que la session est ouverte et connectée, après avoir appelé la méthode Liste():NHibernate.ISession.CreateCriteria (typeof (BusinessObject)) est {}

 using (ISession NSession = SessionProvider.GetSession()) 
     { 
      ICriteria CriteriaQuery = 
       NSession.CreateCriteria(typeof(Application)); 
      return (List<Application>) CriteriaQuery.List<Application>(); 
     } 

il ne récupère pas les données et juste un "{}", c'est la classe d'application et son code XML mapping:

public class Application 
{ 
    private string _name; 
    private Developer _developer; 
    private int _id; 
    private List<Bug> _bugs; 

    public Application() 
    { 
     _bugs = new List<Bug>(); 
    } 

    public virtual int ApplicationId 
    { 
     get { return _id; } 
     set { _id = value; } 
    } 

    public virtual Developer Developer 
    { 
     get { return _developer; } 
     set { _developer = value; } 
    } 

    public virtual string Name 
    { 
     get { return _name; } 
     set { _name = value; } 
    } 

    public virtual List<Bug> Bugs 
    { 
     get { return _bugs; } 
     set { _bugs = value; } 
    } 
} 

et:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="BugTracker.Model" 
        assembly="BugTracker"> 
    <class name="Application" table="Applications" lazy="false"> 
    <id name="ApplicationId" column ="ApplicationId" type="int" unsaved-value ="0"> 
     <generator class ="native"></generator> 
    </id> 

    <property name ="Name" column="Name"/> 

    <component access ="field.camelcase-underscore" name ="Developer" 
       class="Developer"> 
     <property access ="field.camelcase-underscore" 
       column ="DeveloperFirstName" name="FirstName"/> 
     <property access ="field.camelcase-underscore" 
       column="DeveloperLastName" name="LastName"/> 
    </component> 

    <bag cascade="all-delete-orphan" 
      inverse ="true" 
      name ="Bugs" 
      lazy="false" 
      access ="field.camelcase-underscore"> 
     <key column ="ApplicationId"/> 
     <one-to-many class ="Bug"/> 
    </bag> 

    </class> 
</hibernate-mapping> 
+0

J'ai oublié de dire qu'une exception se produit dans la dernière ligne du constructeur de classe d'application! – FidEliO

Répondre

0

-vous sûr Do not obtenez une Exception sur return (List<Application>) CriteriaQuery.List<Application>();? Pour autant que je sache, nhibernate a besoin d'interfaces pour les collections, donc il peut brancher son propre changeur de canaux. Pouvez-vous essayer et changer List<Bug> à IList<Bug>

+0

Oui, je l'ai fait et je reçois toujours cette exception! Sûrement j'obtiens une exception d'incantation et cette ligne de retour cause cette exception. – FidEliO

+0

J'ai changé la liste en Ilist, toujours pareil! – FidEliO

+0

@FidEliO quelle exception obtenez-vous maintenant? – Firo