·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> NHibernate使用简单示例

NHibernate使用简单示例

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

NHibernate使用简单示例

NHibernate使用小示例

1.新建Model类库项目。

使用代码生成器生成Model类。

此处以简单的UserInfo表作为示例。

注意字段前必须以virtual修饰。

namespace Model{    public partial class UserInfo    {        public virtual System.Int32 Id { get; set; }        public virtual System.String Name { get; set; }    }}

2.编写映射实体类与数据库的映射文件。

新建一个xml文件,并且命名为UserInfo.hbm.xml此处必须以 表名.hbm.xml 结尾,并将其生成操作改为“嵌入的资源”,因为NHibernate会以这种方式寻找映射关系。

<?xml version="1.0" encoding="utf-8" ?><hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Model" namespace="Model">  <class name="Model.UserInfo" table="UserInfo">    <id name="Id" column="Id" type="int"></id>    <PRoperty name="Name" column="Name" type="string"  />  </class></hibernate-mapping>

3.新建一个DAL类库项目。

新建一个NHibernateHelper类,作为生产和管理session的工厂。

namespace DAL{    public class NHibernateHelper    {        private ISessionFactory _sessionFactory;        public NHibernateHelper()        {            _sessionFactory = GetSessionFactory();        }        private static ISessionFactory GetSessionFactory()        {            return (new Configuration()).Configure().BuildSessionFactory();        }        public ISession GetSession()        {            return _sessionFactory.OpenSession();        }    }}

保证每一个NHibernate类的对象只有一个Session。

4.新建一个UserInfoDAL类,实现对UserInfo数据的增删改查。

namespace DAL{    public partial class UserInfoDAL    {        private ISession _isession;        public UserInfoDAL()        {            _isession = new NHibernateHelper().GetSession();        }        public void Add(UserInfo u)        {            _isession.Save(u);            _isession.Flush();        }        public bool Update(UserInfo u)        {            try            {                _isession.Update(u);                _isession.Flush();                return true;            }            catch (Exception ex)            {                return false;            }            finally            {                _isession.Close();            }        }        public bool Delete(UserInfo u)        {            try            {                _isession.Delete(u);                _isession.Flush();                return true;            }            catch (Exception ex)            {                return false;            }            finally            {                _isession.Close();            }        }        public UserInfo GetById(int id)        {            return _isession.Get<UserInfo>(id);        }        public IList<UserInfo> GetList()        {            IList<UserInfo> list = _isession.QueryOver<UserInfo>().List();            return list;        }    }}

5.新建控制台测试项目调用

由于BLL和UI层不是本文重点,所以没有考虑依赖注入、分层、接口等,本文主要介绍是NHibernate的配置。

在控制台项目中添加xml文件,名字为hibernate.cfg.xml 不可更改,并且修改为“如果较新则复制”。