NHibernate小结之一

最近的项目用NHibernate来做,之前用过Hibernate,感觉相当之好。

还是先来说一下资料在哪里可以找到。主要资料还是在官网www.hibernate.org中的nhibernate区。小结二和三准备把常用的资料都放在文档中。

 

这一小节开始做一个demo。因为每次我动手开始做demo好像都不是太顺利,从头做起每次都花时间过多,所以做个demo,以后直接就可以测试了。

 

环境如下:vs2008sp1, nunit, nhibernate1.2.1(下载非安装包的,里面带jetdrive.dll的)

1.新建控制台程序HiberDemo1并加入要用的引用,包括nhibernate和jetdriver的,因为我们用access数据库,比较方便。

2.加两个新文件夹Domain和Mappings,分别用来放pojo和hbm.xml文件的。

3.加入名为hibernate.cfg.xml的xml文件。如果你把nhibernate的架构文件复制到vs2008的安装目录下xml/schema下面,这时就可以选择架构,有自动语法提示。xml内容如下:

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  3.     <session-factory>
  4.         <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
  5.         <property name="dialect">NHibernate.JetDriver.JetDialect, NHibernate.JetDriver</property>
  6.         <property name="connection.driver_class">NHibernate.JetDriver.JetDriver, NHibernate.JetDriver</property>
  7.         <property name="connection.connection_string">Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb</property>
  8.         <property name="show_sql">true</property>
  9.         <mapping file="Mappings/person.hbm.xml"/>
  10.     </session-factory>
  11. </hibernate-configuration>

 

可以看到,我们用的数据库是access的,名字叫test.mdb,位置放在debug目录中(就是和生成的程序一个目录)。另外要做一个person的pojo,我们马上来做。

 

4.在Domain中生成一个person.cs,内容如下:

  1. namespace HiberDemo1.Domain
  2. {
  3.     public class person
  4.     {
  5.         virtual public Guid id { getset; }
  6.         virtual public string lastname { getset; }
  7.         virtual public string firstname { getset; }
  8.         virtual public int age { getset; }
  9.     }
  10. }

 

5.在Mappings中生成一个person.hbm.xml文件,同样可以用语法提示,如果你把架构文件加入vs中的话。内容如下:

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="HiberDemo1" namespace="HiberDemo1.Domain">
  3.     <class name="person">
  4.         <id name="id">
  5.             <generator class="guid"></generator>
  6.         </id>
  7.         <property name="lastname"/>
  8.         <property name="firstname"/>
  9.         <property name="age"/>
  10.     </class>
  11. </hibernate-mapping>

 

hibernate.cfg.xml和person.hbm.xml文件在vs中选择属性,在属性的“复制到输出目录”选择“始终”。

 

 

6.这样,基本的配置都有了,有一个配置文件,一个pojo类和其xml。下面来写生成实际数据表的代码吧。如果你想用NUnit就写测试,这里简单起见,直接在Main里面写几行,运行一下。记得加入Nhibernate.cfg和Nhibernate.tool.hbm2ddl命名空间。

  1.         static void Main(string[] args)
  2.         {
  3.             var cfg = new Configuration();
  4.             cfg.Configure();
  5.             new SchemaExport(cfg).Create(truetrue);
  6.             Console.WriteLine("hit any key to exit");
  7.             Console.ReadKey();
  8.         }

成功的话,会有这样的图出现:

 

如果没有sql语句出现,那么肯定是有问题,有时候nhibernate并没有提示错误的地方,这时就要自己细心的找一下啦。我感觉用2.0CR2版的,提示会多一些,但2.0版还不成熟,等成熟再用。

另外如果有出错提示,要多看几层出错源,有时候最外层的出错源提示不是很有针对性。

本文的源代码我会发到csdn的下载中,地址到时候再更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值