风影总结NHibernate1

NHibernate开篇

学习NHibernate有一段时间了,打算做个阶段性总结,就萌生了这个系列,这个系列参考NHibernate官方文档和李勇京大神的博客。作为开篇,首先了解多少人在使用NHibernate,先搞清楚NHibernate是什么?

这个系列我使用NHibernate官方的Download Now NH3.3.1 点击下载

NHibernate是什么

NHibernate 是一个面向.NET 环境的对象/关系数据库映射工具。对象关系映射(O/R Mapping,Object Relational Mapping)表示一种技术,用来把对象模型表示的对象映射到基于SQL 的关系模型数据结构中去。

NHibernate不仅仅管理.NET 类到数据库表的映射(包括.NET 数据类型到SQL 数据类型的映射),还提供数据查询和获取数据的方法,大幅度减少我们开发时人工使用SQL和ADO.NET处理数据的时间。NHibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的95%。并请记住NHibernate作为数据库访问层,是与你的程序紧密集成的

跟我来HelloWorld
1.下载最新版本的NH3.3的类库Download Now NH3.3.1

2.创建项目创建一个空的VS解决方案如MyNHDemo
图片

3.创建一个解决方案文件夹 Schema
图片

图片

4.在项目文件夹里创建lib文件夹,把所需的类库与xml提示文件拷贝到lib文件夹内
图片

5.把这两个xsd文件加入到解决方案文件夹 Schema中。以达到自动提示代码的效果
图片

6.创建2个项目一个作为NH的类库项目 NHModel  另一个作为测试项目 MyNHOffice

图片

7.NHModel类库里引用所需的DLL文件

8.编写一个简单的测试数据库Demo 建立2张有主外键关系的表 GoodsType与Goods

图片

9.开始编写模型,首先在NHModel类库里创建一个文件夹Common用来装入NH3所需的模型类(所有属性必须加上virtual关键字)
图片

图片

10.在NHModel类库里创建一个Mapping文件夹。用来放NH的模型配置文件(要注意的是该模型文件必须 《模型名.hbm.xml》这种命名方式来命名配置文件,而且必须修改该配置文件属性里的 生成操作属性:内容 更改为 嵌入的资源 )
图片

11.根据代码的自动提示功能就可以轻松的完成看似复杂的配置文件编写操作
图片

12.我们一起来编写这两个实体类的mapping

图片

图片

13 编写一个工具类NHibernateBase

using NHibernate;

using NHibernate.Cfg;

namespace NHModel

{

    public class NHibernateBase

    {

        private static Configuration Configuration { get; set; }

        protected static ISessionFactory SessionFactory { get; set; }

        private static ISession session = null;

        private static IStatelessSession statelessSession = null;

        public static Configuration ConfigureNHibernate(string assembly)

        {

            Configuration = new Configuration();

            Configuration.AddAssembly(assembly);

            return Configuration;

        }

        public void Initialize(string assembly)

        {

            Configuration = ConfigureNHibernate(assembly);

            SessionFactory = Configuration.BuildSessionFactory();

        }

        public static ISession Session

        {

            get

            {

                if (session == null)

                {

                    session = SessionFactory.OpenSession();

                }

                return session;

            }

        }

        public static IStatelessSession StatelessSession

        {

            get

            {

                if (statelessSession == null)

                {

                    statelessSession = SessionFactory.OpenStatelessSession();

                }

                return statelessSession;

            }

        }

    }

}

14.马上就可以成功了~让我们在测试项目里编写NHibernate的App.config配置文件吧

图片

15万事具备,我们来体验一下NH给我们带来的非一般的体验 

图片

运行一下看看!

图片

打开数据库看看幸苦后的成果吧~
图片

好吧我承认这个Hello World有点长,不过我们还是得到想要的结果啦~

后面我们会来慢慢的剖析今天做的所有东西吧~

时间不早了晚安~

posted on 2012-08-04 16:32  任生风影  阅读(515)  评论(1编辑  收藏  举报

导航