DIFICULDADE IMPLEMENTA?ÃO NHIBERNATE

PEDROPIMENTEL 18/03/2015 13:06:13
#445319
Prezados,
boa tarde.

Estava fazendo um projeto em C# para meu irmão, ele é professor de música.
Se baseia em um software simples para cadastro de alunos, data das aulas, modalidade (violão ou guitarra), vencimento de mensalidade e tal. Seria algo como uma super agenda. . Sou iniciante em C# e to usando o Visual Studio 2013.

Estava dando os comandos CRUD na mão (ADO.Net), com as classes SQLConnection, SQLCommand, SQLAdapter e tal (tô usando o SGBD SQL Server Express 2014), depois de algum tempo li sobre frameworks ORM (Entity e NHibernate). Optei então por aprender o NHibernate, porém nunca funciona.

Tenho tentando alguns exemplos básicos em tutorias na internet, mas sempre dá erro.
Busquei fazer uma solução identica ao link que se segue:

https://www.youtube.com/watch?v=FkmFI736wMU

Porém, ao compilar é retornado o erro: An unhandled exception of type [ô]NHibernate.Cfg.HibernateConfigException[ô] occurred in Nhibernate.dll
Additional information: An exception ocurred during configuration of persistence layer

Anexei o erro para vcs visualizarem melhor.

Segui exatamente como o tutorial indica, mudando obviamente apenas a String de conexão no arquivo App1.config. Tentei com Windows Autentication e com usuário SA, ambos apresentam o mesmo erro.

Tentei também com Fluent, mas não entendi muito bem as linhas de código para mapeamento, e até onde entendi o Fluent não cria o arquivo de configuração, apenas de mapeamento.

Em anexo segue print da minha tabela no Sql Server e erro no Visual Studio.

Segue meu código:

App1.config:

<?xml version=[Ô]1.0[Ô] encoding=[Ô]utf-8[Ô] ?>
<configuration>
<configSections>
<section name=[Ô]hibernate-configuration[Ô] type=[Ô]NHibernate.Cfg.ConfigurationSectionHandler, NHibernate[Ô] />
</configSections>
<hibernate-configuration xmlns=[Ô]urn:nhibernate-configuration-2.2[Ô]>
<session-factory>
<property name=[Ô]connection.provider[Ô]>NHibernate.Connection.DriverConnectionProvider</property>
<property name=[Ô]dialect[Ô]>NHibernate.Dialect.MsSql2005Dialect</property>
<property name=[Ô]query.substitutions[Ô]>hqlFunction=SQLFUNC</property>
<property name=[Ô]connection.driver_class[Ô]>NHibernate.Driver.SqlClientDriver</property>
<property name=[Ô]connection.connection_string[Ô]>Data Source=PEDRO\SQLSERVER14;Initial Catalog=NHibernateTest1;Integrated Security=True</property>
<property name=[Ô]show_sql[Ô]>true</property>
<mapping assembly=[Ô]NHibernateTutorialPart1[Ô] />
</session-factory>
</hibernate-configuration>
</configuration>

********************************************************************************************************************************************************************************************************************

Contact.hbm.xml

<?xml version=[Ô]1.0[Ô] encoding=[Ô]utf-8[Ô] ?>
<hibernate-mapping xmlns=[Ô]urn:nhibernate-mapping-2.2[Ô]
assembly=[Ô]NHibernateTutorialPart1[Ô]
namespace=[Ô]NHibernateTutorialPart1[Ô]>

<class name=[Ô]Contact[Ô]>
<id name=[Ô]ID[Ô] column=[Ô]ID[Ô]>
<generator class=[Ô]identity[Ô]/>
</id>
<property name=[Ô]FirstName[Ô] />
<property name=[Ô]LastName[Ô] />
</class>

</hibernate-mapping>

********************************************************************************************************************************************************************************************************************

Classe Contact

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NHibernateTutorialPart1
{
public class Contact
{
public virtual int ID { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
}
}

********************************************************************************************************************************************************************************************************************

Form1.cs


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
using NHibernateTutorialPart1;

namespace NHibernateTutorialPart1
{
public partial class Form1 : Form
{
private Configuration myConfiguration;
private ISessionFactory mySessionFactory;
private ISession mySession;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
myConfiguration = new Configuration();
myConfiguration.Configure();
mySessionFactory = myConfiguration.BuildSessionFactory();
mySession = mySessionFactory.OpenSession();

// Add Record
using (mySession.BeginTransaction())
{
Contact loContact = new Contact { FirstName = [Ô]John[Ô], LastName = [Ô]Doe[Ô] };
mySession.Save(loContact);

mySession.Transaction.Commit();
}

// List Contact

using (mySession.BeginTransaction())
{
ICriteria criteria = mySession.CreateCriteria<Contact>();
IList<Contact> list = criteria.List<Contact>();

mySession.Transaction.Commit();
}

}
}
}


*************************************************************************************************************************************************************************************************************************

Obrigado.
PEDROPIMENTEL 18/03/2015 13:08:16
#445320
Anexo:
F001E 18/03/2015 17:47:59
#445332
O seu arquivo Contact.hbm.xml esta com o Build Action = Embedded Resource ?
Seu projeto está com essas referencias do NHibernate ?

PEDROPIMENTEL 20/03/2015 08:47:17
#445380
Citação:

:
O seu arquivo Contact.hbm.xml esta com o Build Action = Embedded Resource ?
Seu projeto está com essas referencias do NHibernate ?



Sim, ambas as referências foram feitas e setei em Embedded Resource, como questionado.
PEDROPIMENTEL 22/03/2015 15:04:42
#445408
Na verdade eu só havia referenciado o NHibernate e o Iesi.Collections como é informado no vídeo.
Agora que vi em seu print a referência NHibernate.Caches.SysCache2.

Dei uma pesquisa aqui como fazer tal referência e fiz.
Infelizmente o erro persiste
F001E 23/03/2015 12:03:11
#445429
Seu arquivo .hbm esta faltando a tag onde você indica a tabela.

Veja o meu .hbm
Faça seu login para responder