关于 NHibernate 连接 Access 小结

由于项目的需要(主要是测试需要),需要对Access数据库进行操作,在DAL我采用了NHibernate,由于NHB以前只是在Java上运用了些皮毛,因此遇到的问题自然也不少,记录下来,以备后忘:
1)连接Access:NHB没有专门的Access方言,网上搜罗也是众说纷纭,大概是很少将Nhb用在Access上的缘故吧,只能自己尝试了。

我的成功配置文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
  <session-factory name="masparameter">
    <property name="dialect">NHibernate.Dialect.SybaseDialect</property>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.OleDbDriver</property>
    <property name="connection.connection_string">Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=F:\ags92prj\wma3\masparameter.mdb;</property>
    <property name="connection.isolation">ReadCommitted</property>   
    <!-- HBM Mapping Files -->
    <mapping assembly="wmadata" />
  </session-factory>
</hibernate-configuration>

其中 <property name="dialect">NHibernate.Dialect.SybaseDialect</property> 我使用了Sybase的方言,Hibernate没有专门针对Access的方言,只能用一个近似的代替。

开始我使用了MSSql7的方言,但是经过测试:在Insert的语句时,NHB抛出异常,原因是Access不支持同时执行两个SQL语句(MSServer则支持)。

其次我又换了Oracle作为替代方言,经测,Last_。。。的错误(具体忘了),记录是被增加至数据库了,但是总是抛出其他异常。

最后尝试了Sybase的方言,OK,在增删改查的操作下没有出现异常。

对于NHibernate,我也是初学,以上文字希望对大家能有所帮助并多多指教。
原文地址:https://www.cnblogs.com/gis9/p/814034.html