No vídeo da aula 2 exatamente aos 9 minutos do vídeo
fiz da mesma forma como o professor Victor fez em seu vídeo.
No texto da aula, essa parte está alterada
using Loja.DAO;
using Loja.Entidades;
using Loja.Infra;
using NHibernate;
using NHibernate.Cfg;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Loja
{
class Program
{
static void Main(string[] args)
{
Categoria umaCategoria = new Categoria();
umaCategoria.Nome = "Uma Categoria";
Produto produto = new Produto();
produto.Nome = "Camiseta";
produto.Preco = 10;
produto.Categoria = umaCategoria;
ISession session = NHibernateHelper.AbreSession();
ITransaction transacao = session.BeginTransaction();
session.Save(umaCategoria);
session.Save(produto);
transacao.Commit();
session.Close();
Console.Read();
}
}
}
Porém quando executamos esse código, o NHibernate joga uma exceção pois tentamos associar uma nova categoria, que está no estado Transient, com o produto que está sendo gravado. O nome dessa exceção é TransientObjectException.
A TransientObjectException ocorre sempre que tentamos gravar um relacionamento com um objeto que está no estado Transient. Para evitar a exceção, precisamos fazer com que a categoria será associada com o produto esteja no estado Persistent, ou seja, antes de gravar o produto precisamos gravar a categoria:
Produto produto = new Produto();
// inicializa o produto
Categoria categoria = new Categoria();
// inicializa a categoria
produto.Categoria = Categoria;
ITransaction transacao = session.BeginTransaction();
session.Save(categoria);
session.Save(produto);
transacao.Commit();
Mesmo que eu faça destes dois modos, ainda gera uma Exception indicando o ponto do erro logo no session.Save(umaCategoria); e não consigo sair deste ponto em diante.
Todos os métodos estão instanciados no namespace using, e como é início de aula, a base de código está cru e com pouca implementação para gerar algum conflito de dependências, mesmo que as atuais já tenham sido adicionadas, NHibernate, DAO, Infra, etc..