4
respostas

Problemas na Aula 3 - TypeInitializationException no NHibernate

Anteriormente eu ja havia salvo dados no DB usando os mesmos arquivos XML que usei nessa aula. Os únicos novos arquivos criados foram o .hbm.xml de Produto e Categoria!

Minha classe Program

namespace Loja
{
    class Program
    {
        static void Main(string[] args)
        {
            Categoria categoria = new Categoria();
            categoria.Nome = "Roupas";

            Produto produto = new Produto();
            produto.Nome = "Camisa";
            produto.Preco = 19;
            produto.Categoria = categoria;

            ISession session = NHibernateHelper.AbreSession();
            ITransaction transaction = session.BeginTransaction();
            session.Save(categoria);
            session.Save(produto);
            transaction.Commit();            

            Console.Read();
        }
    }
}

Meu NHibernateHelper

namespace Loja.Infra
{
    class NHibernateHelper
    {
        private static ISessionFactory factory = CriaSessionFactory();

        private static ISessionFactory CriaSessionFactory()
        {
            Configuration cfg = NHibernateHelper.RecuperaConfiguracao();
            return cfg.BuildSessionFactory();
        }

        public static Configuration RecuperaConfiguracao()
        {
            Configuration cfg = new Configuration();
            cfg.Configure();
            cfg.AddAssembly(Assembly.GetExecutingAssembly());
            return cfg;
        }

        public static void GeraSchema()
        {
            Configuration cfg = RecuperaConfiguracao();
            new SchemaExport(cfg).Create(true, true);
        }

        public static ISession AbreSession()
        {
            return factory.OpenSession();
        }
    }
}

Meu NHibernate.cfg

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">
      NHibernate.Connection.DriverConnectionProvider
    </property>
    <property name="dialect">
      NHibernate.Dialect.MySQLDialect
    </property>
    <property name="connection.driver_class">
      NHibernate.Driver.MySqlDataDriver
    </property>
    <property name="connection.connection_string">
      Server=localhost;Database=loja;Uid=root;Pwd=root;
    </property>
    <property name="show_sql">
      true
    </property>
  </session-factory>
</hibernate-configuration>

Meu Categoria.hbm

<?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" />
  </class>
</hibernate-mapping>

Meu Produto.hbm

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

Olá Nilson,

a exception imprimiu alguma mensagem mais específica indicando o erro? Além disso, me manda também as classes Produto e Categoria para eu dar uma olhada e ver se o mapeamento bate com a classe.

Tb estou com o mesmo erro que o amigo acima!

Olá Nilson,

conseguiu resolver o problema?

Olá, eu agradeço o apoio. Informo que por hora não estou buscando a solução do problema pois pausei o curso de nHibernate, para realização de outros cursos por novos desafios. Eu agradeço mais uma vez, e gostaria de encerrar o tópico.