跟我学习NHibernate (1)

引言:Nibernate概述

  NHibernate是一个ORM框架,NHibernate是一个把C#对象世界和关系世界数据库之间联系起来的一座桥梁。NHibernate 能自动映射实体模型到数据库,所以这能让你集中考虑一件或多件事情。

 

1.给Program.cs文件添加代码

注意:以下程序仅供参考,不作为运行的依据。由于本文过旧,所以你必须从控制台进行安装,安装命令为: install-package NHibernate -version 2.1.2.4000

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NHibernate.Cfg;
using NHibernate;
using System.Reflection;

namespace NHibernatePets
{
    public class Pet
    {
        virtual public int id { get; set; }
        virtual public string PetName { get; set; }
        virtual public string Species { get; set; }
        virtual public DateTime Birthday { get; set; }

        virtual public string Speak()
        {
            return "你好!我的名字是 " + PetName + ",我是一个" + Species + " 以及我生日是" + Birthday;
        }
    
    }



    public class Program
    {
        public static void Main(string[] args)
        {
            Pet peter = new Pet { PetName="peter",Species="Cat",Birthday=new DateTime(2010,10,20)};
            Console.WriteLine(peter.Speak());

            //把peter保存到数据库里面去
            try
            {
                using (ISession session = OpenSession())
                {
                    using (ITransaction transaction = session.BeginTransaction())
                    {
                        session.Save(peter);
                        transaction.Commit();
                    }
                    Console.WriteLine("peter已经保存到数据库!");
                }

                //从数据库里读取peter
                using (ISession session = OpenSession())
                {
                    IQuery query = session.CreateQuery("From Pet");
                    IList<Pet> pets = query.List<Pet>();
                    Console.Out.WriteLine("宠物的个数:" + pets.Count);
                    pets.ToList().ForEach(p => Console.WriteLine(p.Speak()));
                }

                //更新宠物信息
                using (ISession session = OpenSession())
                {
                    using (ITransaction transaction = session.BeginTransaction())
                    {
                        IQuery query = session.CreateQuery("From Pet where PetName='peter'");
                        Pet pet = query.List<Pet>()[0];
                        pet.PetName="Jason";
                        transaction.Commit();
                    }
                }

                //再次从数据库里读取所有的信息
                using (ISession session = OpenSession())
                {
                    IQuery query = session.CreateQuery("From Pet");
                    IList<Pet> pets = query.List<Pet>();
                    Console.Out.WriteLine("宠物的个数:" + pets.Count);
                    pets.ToList().ForEach(p => Console.WriteLine(p.Speak()));
                }

                //删除宠物信息
                using (ISession session = OpenSession())
                {
                    using (ITransaction transation = session.BeginTransaction())
                    {
                        IQuery query = session.CreateQuery("From Pet where PetName='Jason'");
                        Pet pet = query.List<Pet>()[0];
                        session.Delete(pet);
                        transation.Commit();
                    }

                   
                }

            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

        }

        static ISessionFactory SessionFactory;
        static ISession OpenSession()
        {
            //注意这种方式不是线程安全的
            //SessionFactory会话费大量的资源,只创建一次
            if (SessionFactory == null)
            {
                Configuration configuration = new Configuration();
                configuration.AddAssembly(Assembly.GetCallingAssembly());
                SessionFactory = configuration.BuildSessionFactory();
            }

            return SessionFactory.OpenSession();
        }

    }
}

 

posted @ 2015-09-05 12:20  KMSFan  阅读(292)  评论(0编辑  收藏  举报
document.getElementById("homeTopTitle").innerText="ღKawaii";