欢迎来到天天文库
浏览记录
ID:8847933
大小:50.50 KB
页数:8页
时间:2018-04-09
《nhibernate搭配access的问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、NHibernate搭配Access的问题近日想学习一下NHibernate,以用在最新的一套大型系统上。想想不如先做一个小网站来练练手,不过之前还是得先看看NHibernate的使用方法。搜索了几篇入门文章,包括官方网站的FirstStep,然后就开始写了。本想使用Access数据库,结果是一直失败,一开始是连Configuration都无法生成,后来又是写入数据库错误。后来改成使用Sqlserver2000,结果很顺序的就通过了。再改成Access,又没有了头绪。最后经历了千辛万苦啊,终于算是通过了。总结
2、如下:使用Access数据库的组件在官方下载的NHibernate-contrib文件里,有个NHibernate.JetDriver.dll,这个文件也是必须的。其实,在app.config文件里加入NHibernate属性的语句是:3、ler,System,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/>4、r.JetDialect,NHibernate.JetDriver"/>5、ibernate>那个dialect和driver_class的值里面前面是类名称,后面是命名空间名称,中间用逗号分开,不可缺少。以前查到的一些资料里都没有这一步,所以一直失败。最后还有一个问题,用户表里面的LastLogon是个日期时间字段,类里面字段的属性也设成日期时间,插入的时候报错,把类里面的字段改成string就可以了,可能是因为插入的时候没有加引号的问题。还有密码字段如果字段名为Password,同样插入出错,这个应该是字段名跟关键字冲突的问题,看来作者没有考虑到把
3、ler,System,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/>
4、r.JetDialect,NHibernate.JetDriver"/>
5、ibernate>
6、字段名括起来的问题。但是我一直没有办法显示出最终要执行的sql语句,所以也一直没有办法确定错误原因。不过有了以上内容,应该足够写完整个程序了。测试了一下性能,点击按钮到返回,要2秒多,明显有点慢,做了一个10000个新数据,然后一次写入,用了20秒才写完,有点不可接受了。回头试一下直接用OleDb写入的速度比较一下吧。 对于昨天的问题,继续研究了一下。经过一阵搜索,受到了另一位仁兄的启发。现在的速度慢,跟多一次DLL调用应该也有不小的关系,为什么不把NHibernate.JetDriver合并进主模块呢?打
7、开NHibernate的源代码,试着编译了一下,报错,说是签名失败,缺少一个sn文件。后来找到这个文件是需要自己生成的,使用VS自带的一个工具sn.exe-kNHibernate.snx就可以了,把这个文件放到src目录下,编译通过。在NHibernate的项目里添加目录JetDriver,然后把NHibernate-Contrib里面的10目录里面的源代码一个个添加进来,编译,通过了。试着调用一下,用昨天那个程序,重新添加引用,成功了,减少了一个DLL文件。顺便研究了一下JetDriver的源代码,在Jet
8、Dialect.cs文件里找到了一段:publicoverridecharCloseQuote{get{return'';}}初步以为这个应该是自动添加在字段名上的修饰,于是把中间改成中括号,结果失败,查看了一下NHibernate输出的SQL,没有起作用,放弃。在JetDbCommand.cs文件里找到一段CheckParameters,如果字段属性是日期时间字段,那么会自动转换成字符串。既然如此
此文档下载收益归作者所有