快速业务通道

NHibernate教程

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-10
;          <many-to-many column="CourseID" class=" NHibernateTest.Course, NHibernateTest "/>

                   </set>

</class>


</hibernate-mapping>

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();
}

&n

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号