火星文 技术研习社

Noname Cat, Keep Thinking
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

NHibernate 搭载 Access 数据库

Posted on 2006-03-28 08:18  剑廿三  阅读(512)  评论(0编辑  收藏  举报

使用 Access 数据库的组件在官方下载的 NHibernate-contrib 文件里,有个 NHibernate.JetDriver.dll,这个文件也是必须的。其实,在app.config文件里加入NHibernate属性的语句是:

<? 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 >
  
< nhibernate >
    
< add  key ="hibernate.connection.provider"  value ="NHibernate.Connection.DriverConnectionProvider" />
    
< add  key ="hibernate.dialect"  value ="NHibernate.JetDriver.JetDialect, NHibernate.JetDriver" />
    
< add  key ="hibernate.connection.driver_class"  value ="NHibernate.JetDriver.JetDriver, NHibernate.JetDriver" />
    
< add  key ="hibernate.connection.connection_string"  value ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=hibtest.mdb" />
  
</ nhibernate >
</ configuration >

那个 dialect 和 driver_class 的值里面前面是类名称,后面是命名空间名称,中间用逗号分开,不可缺少。

默认配置的注意事项:

1. Access 数据表中类型为日期时间的字段,在类中所对应的类型不能为 DateTime,而要改为 string。原因是插入时没有加引号。

2. 对于名为 User、Username 和 Password 的字段,将会引起插入错误,原因是与字段名与关键字冲突,解决方法是用中括号把字段名括起来。

3. 作为外部调用 DLL,执行时效率会比较差。解决方法是把 JetDriver 也编译进主模块。