Fluent NHibernate 系列(一)Fluent Nhibernate简介
说明
阅读本系类文章之前,有必要了解ORM,NHibernate,NHibernate 本人推荐YJingLee的NHibernate之旅,由于本人也刚学,文章中出现的错误或者不完善的地方请大家谅解,同时希望大家能够多多帮助,一起进步....
关于Fluent NHibernate(官网下载 http://fluentnhibernate.org/)
Fluent NHibernate能够取代标准的XML映射文件(.hbm.xml files)。和传统的XML文件相比,Fluent NHibernate能够让你用强类型的C#代码来书写。因此,这样更容易重构,阅读,而且语句更加的精炼。
同时Fluent NHibernate还提供了其他的工具:
1、自动映射-根据您设计的实体自动推断出映射文件
2、持久化具体测试-能够不用写任何增删改语句就可以反复测试实体类
3、应用程序配置-通过Fluent NHibernate的API可以进行应用程序配置
4、数据库配置-能够用C#代码配置数据库
为什么取代HBM.XML映射文件
1、编译器不会鉴定XML文件
2、XML文件是冗余的
3、NHibernate的HBM映射文件必须重复的指明相同的规则,比如string属性必须不为空
简单例子入手
传统的HBM映射文件
代码
1 <?xml version="1.0" encoding="utf-8" ?>
2 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
3 namespace="QuickStart" assembly="QuickStart">
4
5 <class name="Cat" table="Cat">
6 <id name="Id">
7 <generator class="identity" />
8 </id>
9
10 <property name="Name">
11 <column name="Name" length="16" not-null="true" />
12 </property>
13 <property name="Sex" />
14 <many-to-one name="Mate" />
15 <bag name="Kittens">
16 <key column="mother_id" />
17 <one-to-many class="Cat" />
18 </bag>
19 </class>
20 </hibernate-mapping>
Fluent NHibernate实现相同的效果
代码
1 public class CatMap : ClassMap<Cat>
2 {
3 public CatMap()
4 {
5 Id(x => x.Id);
6 Map(x => x.Name)
7 .Length(16)
8 .Not.Nullable();
9 Map(x => x.Sex);
10 References(x => x.Mate);
11 HasMany(x => x.Kittens);
12 }
13 }