Avant d'exposer le problème, s'il vous plaît consulter le codeNHibernate problème de cartographie Oracle
Base de données (Oracle) SQL:
create table test_tab(
id number,
Name varchar2(50)
);
classe correspondante en C#:
public class TestTable
{
private long id;
public virtual long Id {
get {
return id;
}
set {
id = value;
}
}
private string name;
public virtual string Name
{
get
{
return name;
}
set
{
name = value;
}
}
}
Le fichier de mappage pour ceci:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="DataTransfer" namespace="DataTransfer">
<class name="DataTransfer.Models.TestTable, DataTransfer" table="TEST_TAB">
<id name="Id" column="ID" type="long" unsaved-value="0">
<generator class="sequence">
<param name="sequence">
seq_test
</param>
</generator>
</id>
<property name="Name" column="NAME" type="string" not-null="false"/>
</class>
</hibernate-mapping>
Le "TestTable" classe se trouve dans le dossier Modèles sous projet DataTransfer
fichier de configuration de la figuration mise en veille prolongée:
<?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="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
<property name="connection.connection_string">Data Source=xe;Persist Security Info=True;User ID=hr;Password=hr;Unicode=True</property>
<property name="show_sql">false</property>
<property name="dialect">NHibernate.Dialect.Oracle9Dialect</property>
<!-- mapping files -->
<mapping assembly="DataTransfer" />
</session-factory>
</hibernate-configuration>
Et voici mon code DataAccessLayer;
public void AddToTestTable(Test_Tab user)
{
using (ISession session = GetSession())
{
using (ITransaction tx = session.BeginTransaction())
{
try
{
session.Save(user);
session.Flush();
}
catch (NHibernate.HibernateException)
{
tx.Rollback();
throw;
}
}
}
}
Maintenant, le problème est quand j'insérer une valeur rien à la base de données (en utilisant le formulaire de ASP.NET simples) se (même pas d'exceptions!). Mais cela a fonctionné parfaitement quand je n'ai pas utilisé le dossier "Models" pour la classe TestTable et le dossier "Mappings" pour les fichiers de mapping. Sil te plait aide moi.
Oups !!!!!!!! J'ai trouvé mon problème !! – FlintOff
Monsieur Flint, si vous avez trouvé la solution, vous devriez créer une «réponse» et l'accepter, pour que les générations futures en profitent. –
Comment insérer/ajouter une entité à la base de données? Pouvez-vous montrer du code s'il vous plaît? Est-ce que vous videz la session par exemple? Ou, comment as-tu confisqué le flushmode? –