Array
(
)

Migração para NHibernate

Bruno Batista
   - 12 jul 2011

Bom dia,

estou começando a migrar para NHibernate, mas ao realizar a consulta não está retornando nada, mesmo tendo dados.

Web.Config.

  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
      <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
      <property name="connection.connection_string">Server=LocalHost;Database=ei101;User ID=root;Password=manager</property>
      <!--<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>-->
      <!--<mapping resource="PCO_Modelo.Cliente_EN.hbm.xml" assembly="PCO_Modelo" />-->
    </session-factory>
  </hibernate-configuration>

Conexao

 public static ISession CriarConexao()
    {
      // Sem servidor de DAO remoto
      NHibernate.Cfg.Configuration config = new NHibernate.Cfg.Configuration();
      config.SetProperty(NHibernate.Cfg.Environment.Hbm2ddlKeyWords, "none");
      config.Configure();
      ISessionFactory factory = config.BuildSessionFactory();
      ISession session = factory.OpenSession();
      return session;
    }

Cliente

List<Cliente_EN> clientes = new List<Cliente_EN>();
      using (ISession session = Conexao.CriarConexao())
      {
        clientes = (List<Cliente_EN>)session.CreateCriteria(typeof(Cliente_EN)).List<Cliente_EN>();
      }

Cliente_EN.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="PCO_Modelo" namespace="PCO_Modelo">
  <class name="Cliente_EN" table="CLIENTE">
    <id name="ClienteId" column="ClienteId" type="Int32">
      <generator class="assigned" />
    </id>
    <property name="RazaoSocial" column= "Razao_Social" type="AnsiString" />
    <property name="NomeFantasia" column= "Nome_Fantasia" type="AnsiString" />
  </class>
</hibernate-mapping>

O Objeto clientes está ficando vazio, modifiquei o nome do banco de dados e deu erro, então significa que está funcionando a conexão com o banco de dados. Modifiquei o nome da tabela e não deu erro, não. Coloquei o arquivo de XML com a propriedade Embedded Resource.

O que pode ser este problema, está conectando no banco de dados, mas não está realizando a consulta?

Bruno Batista
   - 15 jul 2011

estou migrando o sistema, e agora me deparei com o seguinte problema, uma Classe possui vários itens de outras classes, e estou tendo problema.

Exemplo: Uma pessoa possui vários telefones, sendo que tenho o cadastro de telefone, e um telefone pode ser de outra pessoa.

Tenho uma tabela para o cadastro de pessoa, uma tabela para cadastro de telefone, e uma tabela que liga as duas tabelas.

Na tabela de ligação possui três campos, um campo sequencial (chave primária), um campo para pessoa e um campo para telefone.

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="PCO_Modelo.Pergunta_EN, PCO_Modelo" table="PERGUNTA">
    <id name="PerguntaId" column="PerguntaId" type="Int32">
      <generator class="assigned" />
    </id>
    <property name="Nome" column="Nome" type="AnsiString" />
    <property name="_objetiva" column="Objetiva" type="AnsiChar" access="field" />
    <property name="_obrigatoria" column="Obrigatoria" type="AnsiChar" access="field" />
    <property name="Comentario" column="Comentario" type="AnsiString" />
    <property name="_adicionarComentario" column="ADICIONAR_COMENTARIO" type="AnsiChar" access="field" />
    <property name="_obrigatorioAdicionarComentario" column="OBRIGATORIO_ADICIONAR_COMENTARIO" type="AnsiChar" access="field" />

    <many-to-one name="GrupoPergunta" column="GrupoPerguntaID" class="PCO_Modelo.GrupoPergunta_EN, PCO_Modelo"/>

    <list name="ItensPergunta" table="ITEM_PERGUNTA_PERGUNTA" lazy="false" cascade="all">
      <key column="ItemPerguntaPerguntaId" />
      <many-to-many class="PCO_Modelo.ItemPerguntaPergunta_EN, PCO_Modelo" column="ItemPerguntaPerguntaID"/>
    </list>
  </class>
</hibernate-mapping>

Desta maneira está solicitando a tag index.

Como que ficaria