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;
}
}
}
- 上一篇:C++文件操作
- 下一篇:C# 屏幕截图程序源码