开源框架完美组合之 + NHibernate + MVC + jQuery + easyUI 中英文双语言小型企业网站Demo,这个是一个在网上流传比较多的和NHibernate的案例,该项目组合了多个框架,可作为实际项目的框架,学习也是很好的例子;原作者是一个叫刘冬的程序员。下面鄙人对该项目做一些分析,以便找到可以直接拿来用的东西。
源码下载:
/s/1pJJW4Fh
首先运行起来看一下,包括五个项目,如下图;
先找一下有没有附带数据库;没有的话运行不起来看不到效果;在WebSite项目的App_Data目录下有数据库;
看一下该数据库,后缀.db,那么可能是SQLite的数据库;用SQLite3载入该db文件,显示一下表;有四张表;但是表的内容乱码;可能是SQLite的中文支持问题;
用SQLite的图形管理工具载入该db文件,可看到表的内容;
现在数据库有了;运行一下;显示如下图的错误;该项目用了多个框架,此错误显然是NHibernate方面的错误;
以下是堆栈;显示错误跟System.Data.SQLite.dll有关;
网页上给出的错误提示;应该是缺少System.Data.SQLite.dll;
在网上下载一个System.Data.SQLite.dll;添加到项目引用;
再运行,还是同样的错误提示;当然可以追踪堆栈具体分析;不过根据经验这是NHibernate配置和数据库版本不兼容的问题;
看下项目的SQLite配置节;
<!--SQLite-->
<add key="provider" value="System.Data.SQLite" />
<add key="connectionString" value="Data Source=|DataDirectory|DataBase.db;Version=3;FailIfMissing=False;" />
<add key="dialect" value="NHibernate.Dialect.SQLiteDialect" />
<add key="driver_class" value="NHibernate.Driver.SQLite20Driver" />
NHibernate配置数据库驱动时,如上最后一行,相同数据库的不同版本,其驱动程序的名称略有不同;这是比较搞的一个地方;如此处不同SQLite版本,可能写"NHibernate.Driver.SQLite20Driver",也可能写“NHibernate.Driver.SQLiteDriver”;试着改变这个地方;还是相同的错误;
当然这个地方有不同的解决方法;不过最方便的还是引用合适版本的System.Data.SQLite.dll; 在网上下了几个dll,均版本过高;这个地方需要版本低于1.7以下才行;才能用
NHibernate.Driver.SQLite20Driver 这个字符串;后来我下到一个合适的DLL;再运行,一切正常,出现了首页。我所附源码中包含1.0.65.0版本的dll,项目可直接运行。OK,拿去花吧。
开源框架完美组合之 + NHibernate + MVC + jQuery + easyUI 中英文双语言小型企业网站Demo项目分析