Olá pessoal,
o exercício diz que deveria ser lançada a exceção TransientObjectException, porém, não é lançada e simplesmente o Produto é adicionado com a CategoriaId null. Pode isso Arnaldo?!
Olá pessoal,
o exercício diz que deveria ser lançada a exceção TransientObjectException, porém, não é lançada e simplesmente o Produto é adicionado com a CategoriaId null. Pode isso Arnaldo?!
Olá, Elias!
Você pode postar aqui seus arquivos xml de configuração do NHibernate para analisarmos? Obrigado!
Claro Marcelo já devia ter feito isso. Desculpe.
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="LojaWeb" namespace="LojaWeb.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>
public class Produto
{
public virtual int Id { get; set; }
public virtual string Nome { get; set; }
public virtual decimal Preco { get; set; }
}
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.driver_class">
NHibernate.Driver.SqlClientDriver
</property>
<property name="connection.provider">
NHibernate.Connection.DriverConnectionProvider
</property>
<property name="dialect">
NHibernate.Dialect.MsSql2008Dialect
</property>
<property name="connection.connection_string">
Server=localhost\SQLEXPRESS;Database=Loja;Uid=sa;Pwd=ts@plus#dbase;
</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
</session-factory>
</hibernate-configuration>
Elias, ficou faltando adicionar a propriedade Categoria
na classe Produto
, como visto no exercício anterior a esse (https://cursos.alura.com.br/course/nhibernate/task/2363)
public class Produto
{
public virtual int Id { get; set; }
public virtual string Nome { get; set; }
public virtual double Preco { get; set; }
public virtual Categoria Categoria { get; set; }
}
E coloque também o atributo classe
no seu xml de configuração:
<many-to-one column="CategoriaId" name="Categoria" class="Categoria"/>
Boa sorte e boas aulas!
public class Produto
{
public virtual int Id { get; set; }
public virtual string Nome { get; set; }
public virtual double Preco { get; set; }
public virtual Categoria Categoria { get; set; }
}
Eu inseri mais mesmo assim continua sem lançar erros.