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>