• 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 不可更改,并且修改为“如果较新则复制”。

  • 相关阅读:
    技术管理之路三、团队建设:怎么带队伍?
    技术管理之路五、管理沟通:管理的必修课!
    职场工作方法论:计划安排,时间管理的“四象限法则”
    职场工作方法论:目标管理SMART原则
    激励方法论1、马斯洛需求模型
    mybatis PageHelper 分页组件优化
    async 和 await
    spring cloud 负载均衡 平滑上下线
    vue 重新渲染组件
    spring cloud 超时整理
  • 原文地址:https://www.cnblogs.com/sunniest/p/4458091.html
Copyright © 2020-2023  润新知