3
respostas

Problema de Compilação no método: "AbreSession"

Olá,Meu Programa está apresentando a seguinte mensagem de erro:

Severity    Code    Description    Project    File    Line    Suppression State
Error    CS0236    A field initializer cannot reference the non-static field, method, or property 'NHibernateHelper.CriaSessionFactory()'    Loja    C:\Users\JoaoEduardo\Documents\Visual Studio 2015\Projects\Loja\Loja\Infra\NHibernateHelper.cs    13    Active

E a parte responsável pelo erro, eu tirei do exercício numero 2 resolvido que é esse aqui:


public class NHibernateHelper

{

private static ISessionFactory fabrica =NHibernateHelper.CriaSessionFactory();

    private ISessionFactory CriaSessionFactory()
    {
        Configuration cfg = NHibernateHelper.RecuperaConfiguracao();
        return cfg.BuildSessionFactory();
    }
    public ISession AbreSession()
    {
        return fabrica.OpenSession();
    }
}

____

E o meu é este aqui:

____

 private static ISessionFactory fabrica = CriaSessionFactory();

        private ISessionFactory CriaSessionFactory()
        {
            Configuration cfg = NHibernateHelper.RecuperaConfiguração();
            return cfg.BuildSessionFactory();
        }
        public ISession AbreSession()
        {
            return fabrica.OpenSession();
        }

____

Acredito que seja algo relacionada à característica Static, porém se todos forem static meu código também não compila.

3 respostas

Olá, Camila!

Precisamos de mais algumas informações para investigar melhor. Você pode postar aqui pra gente os arquivos hbm e hbm.xml do seu projeto? Obrigado!

Abaixo consta as tabelas hbm.xml do programa.

Usuario.hbm.xml

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="Loja"
                   namespace="Loja.Entidades"> 
  <class name="Usuario">
    <id name="Id">
      <generator class="identity"/>
    </id>  
    <property name="Nome"/>
   </class>
</hibernate-mapping>

Produto.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="Loja"
                   namespace="Loja.Entidades">
  <class name="Produto">
    <id name="Id">
      <generator class="identity"/>
    </id>
    <property name="Nome"/>
    <property name="Preco"/>
    <many-to-one name="Categoria" column="categoriaId"/>
  </class>
</hibernate-mapping>

Categoria.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>   
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="Loja"
                   namespace="Loja.Entidades">
<class name="Categoria">
  <id name="Id">
    <generator class="identity"/>
  </id>
  <property name="Nome"/>

  <bag name ="Produtos">
    <Key column="categoriaId"/>
    <one-to-many class="Produto"/> 
  </bag>

</class>
</hibernate-mapping>

Gostaria de uma posição por parte do instrutor :)