Nhibernate教程2(4)

4. 使用NHibernate的API进行编程

 

数据库编程不外乎“添加”、“删除”、“更新”,看看NHibernate是如何实现这三种操作吧。

 

(1)       在类中声明NHibernate的Factory

 

private static Configuration mCfg=new Configuration();
private static NHibernate.ISessionFactory SessionFactory=null;

 

(2)       在系统初始化的时候加载XML,并创建Factory

 

mCfg.AddXmlFile( ApplicationPath +"/Course.hbm.xml");
mCfg.AddXmlFile( ApplicationPath +"/Student.hbm.xml");

SessionFactory=mCfg.BuildSessionFactory();

 

(3)       使用HSql查询

 

string hsql="from Student where StudentName='kexd'";

 

ISession vSession= SessionFactory.OpenSession();

 

IQuery query = vSession.CreateQuery(hsql);

 

IList list = query.List();

 

if(list.Count>0){

 

   Student obj=(Student)list[0];

 

   //.....

 

}

 

vSession.Close();

 

(4)       根据主键查询

 

int studentID=1;

 

ISession vSession= SessionFactory.OpenSession();

 

Student obj=(Student) vSession.Load(typeof(Student),studentID);

 

vSession.Close();

 

(5)       插入

 

Student obj=new Student();

 

obj.StudentName="wuyang";

 

obj.StudentPassword="helloWorld";

 

ITransaction vTransaction = vSession.BeginTransaction();

 

try

 

{

 

   vSession.Save(obj);

 

   vTransaction.Commit();

 

}

 

catch(Exception)

 

{

 

   vTransaction.Rollback();

 

}

 

vSession.Close();

 

(6)       更新

 

ISession vSession= Config.SessionFactory.OpenSession();

 

IQuery query = vSession.CreateQuery("from Student where StudentName='kexd'");

 

IList list = query.List();

 

 

ITransaction vTransaction = vSession.BeginTransaction();

 

try

 

{

 

   foreach(Student obj in list)

 

   {

 

      obj.EmailAddress="kesfzu@21cn.com";

 

      vSession.Save(obj);

 

   }

 

   vTransaction.Commit();

 

}

 

catch(Exception)

 

{

 

   vTransaction.Rollback();

 

}

 

finally

 

{

 

   vSession.Close();

 

}

 

(7)       删除

 

ISession vSession= Config.SessionFactory.OpenSession();

 

IQuery query = vSession.CreateQuery("from Student where StudentName='kexd'");

 

IList list = query.List();

 

 

ITransaction vTransaction = vSession.BeginTransaction();

 

try

 

{

 

   foreach(Student obj in list)

 

   {

 

           vSession.Delete(obj);

 

   }

 

   vTransaction.Commit();

 

}

 

catch(Exception)

 

{

 

   vTransaction.Rollback();

 

}

 

finally

 

{

 

   vSession.Close();

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值