Ho costruito un db con SQL server 2005 con la seguente tabella
IdCliente, Ragione_Sociale, Partita_Iva e sede con IdCliente chiave primaria e la tabella l'ho chiamate tlb_cliente
ho realizzato il seguente file di configurazione chiamtato cliente.hbm.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" default-access="property">
<class name="Esempio.Cliente, Esempio" table="tlb_cliente">
<id name="Id" column="id_cliente" unsaved-value="0">
<generator class="native" />
</id>
<property name="RagioneSociale" column="Ragione_Sociale"/>
<property name="PartitaIva" column="Partita_Iva" />
<property name="Sede" column="Sede" />
</class>
</hibernate-mapping>
e le impostazioni nel file app.config sono le seguenti:
configuration>
<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<nhibernate>
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="hibernate.connection.connection_string" value="Server=localhost;initial catalog=Hquickstart;Integrated Security=SSPI"/>
</nhibernate>
</configuration>
Questo è il codice che la utilizza:
ISession session = SessionHelper.GetSession();
Cliente cliente = new Cliente();
cliente.RagioneSociale = "Ditta 2";
cliente.PartitaIva = "0000102324";
cliente.Sede = "Qualche parte nel mondo";
session.SaveOrUpdate(cliente);
session.Flush();
session.Dispose();
(SessionHelper.GetSession() è una funzione che fa una BuildSessionFactory su un oggetto configuration)
Con SQLServer va tutto a gonfie vele.
Ora costruisco un db in MSAccess, che ha gli stessi nomi di tabelle e campi del rispettivo db in sqlserver, e nel app.config ci scrivo la seguente impostazione
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<nhbernate>
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<property name="dialect">NHibernate.JetDriver.JetDialect, NHibernate.JetDriver</property>
<property name="connection.driver_class" value="NHibernate.JetDriver.JetDriver, NHibernate.JetDriver" />
<property name="connection.connection_string">Provider=Microsoft.Jet.OLEDB.4.0;Data Source="D:\Documenti\Visual Studio 2005\Projects\NHibernateStudy1\QuickStart.mdb"</property>
</nhbernate>
</configuration>
all'esecuzione del codice ottengo il seguente errore: "The type initializer for 'Esempio.SessionHelper' threw an exception" e lo stack trace è il seguente:
System.TypeInitializationException was unhandled
Message="The type initializer for 'Esempio.SessionHelper' threw an exception."
Source="Esempio"
TypeName="Esempio.SessionHelper"
StackTrace:
at Esempio.SessionHelper.GetSession()
at Esempio.Program.Main(String[] args) in D:\DocumentiRLMobile\Visual Studio 2005\Projects\NHibernateStudy1\Esempio\ConsoleApplication1\Program.cs:line 13
at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
Cosa può essere successo ?
Grazie anticipatamente per la risposta