2011-07-25 60 views
0

在我的代码,当会话是打开的,并连接,调用列表后()方法:NHibernate.ISession.CreateCriteria(typeof运算(BusinessObject的))是{}

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

不会检索任何数据而只是一个 “{}”,这是应用类和它的映射XML代码:

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; } 
    } 
} 

和:

<?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

我忘了告诉异常发生在应用程序类构造函数的最后一行! – FidEliO

回答

0

你肯定不要在return (List<Application>) CriteriaQuery.List<Application>();上获得例外?

据我所知,nhibernate需要集合的接口,所以它可以插入自己的更改跟踪。你可以尝试和改变List<Bug>IList<Bug>

+0

是的,我做了,但我仍然得到这个例外!当然,我得到一个演员异常,并且返回线路导致该异常。 – FidEliO

+0

我确实将列表更改为Ilist,仍然一样! – FidEliO

+0

@FidEliO你现在有什么异常? – Firo

相关问题