NHibernate.ISession.CreateCriteria (typeof (BusinessObject)) равен {} - PullRequest
0 голосов
/ 25 июля 2011

В моем коде, пока сессия открыта и подключена, после вызова метода List ():

        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>

1 Ответ

0 голосов
/ 25 июля 2011

вы точно не получите исключение для return (List<Application>) CriteriaQuery.List<Application>();?

, насколько мне известно, nhibernate нуждается в интерфейсах для коллекций, поэтому он может подключать свой собственный отслеживание изменений.Можете ли вы попробовать изменить List<Bug> на IList<Bug>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...