专注于高品质PHP技术等信息服务于一体 [STIEMAP] [RSS]

百度提供的广告:
c#
当前位置:首页 > 技术文档 > c# >  > 
NHibernate 配置案例源码

1,配置
 Web.config
 <configSections> 节点中添加
 <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
 在添加一个子节点
 在<configuration>之中
     <!-- NHibernate -->
    <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
        <session-factory>
            <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
            <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
            <property name="connection.connection_string">Server=PC2011022315OVP\SQLEXPRESS;initial catalog=Test;Integrated Security=true</property>
        </session-factory>
    </hibernate-configuration>
    <!-- NHibernate -->
    可以参考开发包中的案例

2,编写模型以及hbm.xml
 模型的属性都必须声明为 virtual 
 hbm.xml 必须和类名相同
 <?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"  default-lazy="false" >
  <class name="Mode.AdminMode,Mode" table="Admin">
    <id name="ID" column="ID" type="Int32">
      <generator class="identity"/>
    </id>
    <property name="UserName" column="UserName" type="String"/>
    <property name="UserPwd" column="UserPwd" type="String"/>
  </class>
</hibernate-mapping>

3,数据读写层
//session工厂
       private ISessionFactory sessionFactory = null;

       //构造
       public AdminDAL()
       {
           Configuration conf = new Configuration();
           conf.AddAssembly("Mode");//初始化要被ORM的模型
           sessionFactory = conf.BuildSessionFactory();
       }

       //添加管理员
       public void Add(AdminMode mode)
       {
           ISession session = sessionFactory.OpenSession();
           session.Save(mode);
           session.Close();
       }
    调用Update()要刷新session session.Flush();否则不生效,添加操作不需要。

    在使用IQuery 时还存在 Java Hibernate 存在同样的问题,查询一个count(a)时返回long

Mode:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Mode
{
    public class AdminMode
    {
        private int _ID;      
        private string _userName;       
        private string _userPwd;

        /// <summary>
        /// ID 主键
        /// </summary>
        public virtual int ID
        {
            get { return _ID; }
            set { _ID = value; }
        }
        /// <summary>
        /// 用户名
        /// </summary>
        public virtual string UserName
        {
            get { return _userName; }
            set { _userName = value; }
        }
        /// <summary>
        /// 用户密码
        /// </summary>
        public virtual string UserPwd
        {
            get { return _userPwd; }
            set { _userPwd = value; }
        }

    }
}
Mode xml :

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"  default-lazy="false" >
  <class name="Mode.AdminMode,Mode" table="Admin">
    <id name="ID" column="ID" type="Int32">
      <generator class="identity"/>
    </id>
    <property name="UserName" column="UserName" type="String"/>
    <property name="UserPwd" column="UserPwd" type="String"/>
  </class>
</hibernate-mapping>

DAL:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using Mode;
using NHibernate.Cfg;

namespace DAL
{
   public class AdminDAL
    {
       //session工厂
       private ISessionFactory sessionFactory = null;

       //构造
       public AdminDAL()
       {
           Configuration conf = new Configuration();
           conf.AddAssembly("Mode");
           sessionFactory = conf.BuildSessionFactory();
       }

       //添加管理员
       public void Add(AdminMode mode)
       {
           ISession session = sessionFactory.OpenSession();
           session.Save(mode);
           session.Flush();
           session.Close();
       }

       //修改管理员
       public void Edit(AdminMode mode)
       {
           ISession session = sessionFactory.OpenSession();
           session.Update(mode);
           session.Flush();
           session.Close();
       }

       //查询根据ID
       public AdminMode GetMode(int id)
       {
           AdminMode mode = null;
           ISession session = sessionFactory.OpenSession();
           mode = session.Get<AdminMode>(id);
           session.Close();
           return mode;
       }

       //查询全部
       public IList<AdminMode> GetList()
       {
           IList<AdminMode> list = new List<AdminMode>();
           ISession session = sessionFactory.OpenSession();
           IQuery query = session.CreateQuery("select a from  AdminMode as a");
           list = query.List<AdminMode>();
           return list;
       }

       //分页
       public IList<AdminMode> GetList(int nowPage,int pageSize,ref long count)
       {
           count = 0;
           IList<AdminMode> list = new List<AdminMode>();
           ISession session = sessionFactory.OpenSession();
           IQuery query = session.CreateQuery("select a from  AdminMode as a ");
           query.SetMaxResults(pageSize);
           query.SetFirstResult((nowPage - 1) * pageSize);
           list = query.List<AdminMode>();

           query = session.CreateQuery("select count(a) from  AdminMode as a ");
           count = query.List<long>()[0];
           return list;
       }

       //删除
       public bool Del(int id)
       {
           bool flag = false;
           ISession session = sessionFactory.OpenSession();
           IQuery query = session.CreateQuery(" delete from AdminMode where id = ? ");
           query.SetInt32(0,id);
           flag = 0<query.ExecuteUpdate();
           session.Close();
           return flag;
       }
    }
}