终于下决定学习NHibernate了,先从一个简单的查询开始,刚开始还以为很简单,没有想到出现的问题不少。
(1)配置文件小结(配置文件配置方法很多,这里不全面,只记录经本人测试使用的情况)
NHibernate有两种类型的配置文件,数据访问配置文件 hibernate.cfg.xml(不是必须,可以在Appconfig/WebConfig文件里配置)
Configuration config = new Configuration().Configure();即可此访问配置文件,此配置文件的存放位置为应用程序的运行目录
WINFORM下应该和EXE文件同目录,WEB应用程序下应该处于BIN目录下,第二种配置文件即实体类映射配置文件 类名.hbm.xml,用于描述实体类
与数据库表之间的映射关系,此文件应该采用嵌入资源文件方式发布
(2)出现错误
in expected: <end-of-text> (possibly an invalid or unmapped class name was used in the query)
其实从英文大意可以猜出问题出现原因,这个问题因为我的粗心导致浪费了不少时间
首先你应当确定实体类映射文件(classname.hbm.xml)的生成方式为嵌入的资源,否则有可能
NHbernate找不到映射文件抛出异常
IQuery query = s.CreateQuery("from Employee");
假设你的查询是类似这样,那么就应当确认 Employee是正确的,因为这个方法其实采用的NHbernate的HQL
来进行查询的,在这里Employee是跟数据库表存在映射关系的实体类名,不是数据库表名,采用SQL字串进行查询的方法是
CreateSQLQuery(),此外你还应当留心映射文件是classname.hbm.xml而不是类名.xml
s.CreateQuery("from Employee").list()这个返回的是非泛行的list,不是泛型的LIST,浪费我不少时间