文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Fluent NHibernate的初识

Fluent NHibernate的初识

时间:2010-12-21  来源:john chen

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="NHibernateSample.Domain"
namespace="NHibernateSample.Domain.Entities">
<class name ="Customer">
<id name="Id" column ="CustomerId">
<generator class ="native"/>
</id>
<property name ="FirstName"/>
<property name ="LastName"/>
</class>
</hibernate-mapping>

而Fluent Nhibernate的配置如下:

 

    public CustomerMap()
{
Id(m => m.Id);
Map(m => m.LastName);
Map(m => m.FirstName);
}

  我们只需要继承Fluent Nhibernate的ClassMap<T>类,然后在构造方法中完成映射方法,就能完成映射了。FluentNhibernate这种用编程的方式配置映射,省去编写复杂的映射文件,它能完全替换NHibernate的映射文件,让你在映射的时候能使用C#的强类型方式。

  它的Dll可以从这里下载:

  下载地址:http://fluentnhibernate.org/

  在NHibernate中,ISession是操作数据的核心,我们需要通过ISessionFactory来建造ISession来进行数据的交互.

        private ISessionFactory GetSessionFactory()
{
//传统方式
//return (new Configuration()).Configure().BuildSessionFactory();

//自动映射映射
//var sessionFactory = Fluently.Configure(new NHibernate.Cfg.Configuration().Configure())
// .Mappings(m =>
// m.AutoMappings.Add(AutoMap.AssemblyOf<Customer>()))
// .BuildSessionFactory();
//return sessionFactory;

//手动配置映射
var sessionFactory = Fluently.Configure(new NHibernate.Cfg.Configuration().Configure())
.Mappings(m =>
m.FluentMappings
.AddFromAssemblyOf<Customer>())
.BuildSessionFactory();
return sessionFactory;

}
 这里罗列出来了三种创建ISessionFactory的方式,还有很多就不一一罗列出来了。之所以要列出这三种,因为这代表了三种不同情况。
 先说第一种:
private ISessionFactory GetSessionFactory()
{
//传统方式
return (new Configuration()).Configure().BuildSessionFactory();
}
这种是用xml配置映射的一种情况,就不多说了。
  第二种情况:
private ISessionFactory GetSessionFactory()
{
//自动映射
var sessionFactory = Fluently.Configure(new NHibernate.Cfg.Configuration().Configure())
.Mappings(m =>
m.AutoMappings.Add(AutoMap.AssemblyOf<Customer>()))
.BuildSessionFactory();
return sessionFactory;
}

就是配置用Fluent Nhibernate自动映射的情况了,之所以说是自动映射,那是因为它只需要继承Fluent Nhibernate的ClassMap<T>类,而不需要在构造方法中完成映射方法,Fluent Nhibernate本
身框架会帮你完成映射。也许大家会想这不是很好,可以省略映射方法,这样开发效率不就提高了。但事态就是这样,有利就有弊,采用这种情况数据库表里的字段就得按Fluent Nhibernate框架自动映
射所要求规范设计了,这样一来可伸缩性就弱了。
  第三种情况:

        private ISessionFactory GetSessionFactory()
{
//手动配置
var sessionFactory = Fluently.Configure(new NHibernate.Cfg.Configuration().Configure())
.Mappings(m =>
m.FluentMappings
.AddFromAssemblyOf<Customer>())
.BuildSessionFactory();
return sessionFactory;
}
这种情况就是需要继承Fluent Nhibernate的ClassMap<T>类,然后在构造方法中完成映射方法来完成映射。这样创建ISessionFactory就可以自己写映射方法来完成映射,这样程序的可伸缩性就强了。
  时间问题,应用这块就下次再来分享了。
  参考博客:http://www.cnblogs.com/inday/archive/2009/08/04/Study-Fluent-NHibernate-Start.html
       http://www.cnblogs.com/lyj/archive/2010/05/12/inside-nh3-mapping-map.html
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载