hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?><hibernate-configurationxmlns="urn:nhibernate-configuration-2.2"><session-factory><propertyname="connection.driver_class">NHibernate.Driver.SqlClientDriver</property><propertyname="connection.connection_string"> Data Source=zhou;Initial Catalog=AspNetStudy;User ID=sa;Password=jerry; </property><propertyname="adonet.batch_size">10</property><propertyname="show_sql">true</property><propertyname="dialect">NHibernate.Dialect.MsSql2005Dialect</property><propertyname="use_outer_join">true</property><propertyname="command_timeout">10</property><propertyname="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property><propertyname="proxyfactory.factory_class"> NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle </property><mappingassembly="NHibernateDemo"/></session-factory></hibernate-configuration>
UserInfo.hbm.xml
<?xml version="1.0" encoding="utf-8"?><hibernate-mappingxmlns="urn:nhibernate-mapping-2.2"assembly="NHibernateDemo"namespace="NHibernateDemo"><classname="UserInfo"><idname="UserId"column="UserId"><generatorclass="native"/></id><propertyname="UserName"/><propertyname="RealName"/><propertyname="Age"/><propertyname="Sex"/><propertyname="Mobile"/><propertyname="Phone"/><propertyname="Email"/></class></hibernate-mapping>
UserInfo.cs
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceNHibernateDemo{/// <summary>/// 数据库中UserInfo表的持久化类/// 作者:周公/// 博客地址:http://blog.csdn.net/zhoufoxcn/// 日期:2010-03-19/// </summary>publicclassUserInfo{publicvirtualintUserId{get;set;}publicvirtualstringUserName{get;set;}publicvirtualstringRealName{get;set;}publicvirtualintAge{get;set;}publicvirtualboolSex{get;set;}publicvirtualstringMobile{get;set;}publicvirtualstringPhone{get;set;}publicvirtualstringEmail{get;set;}}}
NHibernateCRUD.cs
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingIesi.Collections;usingNHibernate;usingNHibernate.Cfg;namespaceNHibernateDemo{/// <summary>/// 说明:这个类是为了演示NHibernate中的CRUD的用法/// 作者:周公(周金桥)/// 日期:2010-03-07/// </summary>publicclassNHibernateCRUD{privateISessionFactory sessionFactory;publicNHibernateCRUD(){ sessionFactory =newConfiguration().Configure().BuildSessionFactory();}publicISessionGetSession(){return sessionFactory.OpenSession();}/// <summary>/// 统计用户总数/// </summary>/// <returns></returns>publicintCount(){#region 方法一//ISession session = GetSession();//ISQLQuery query = session.CreateSQLQuery("select count(1) from UserInfo");//int count = query.List<int>()[0];//session.Close();//return count;#endregion#region 方法二ISession session =GetSession();IQuery query = session.CreateQuery("select count(c.UserId) from UserInfo c");//注意:不能对于count函数不能使用query.List<int>(),因为默认返回的数值类型是long//否则会抛出GenericADOException,异常描述是:Could not execute query[SQL: SQL not available]//InnerException: System.ArgumentException,InnerException描述是:"值“*”不是“System.Int32”类型,不能在此泛型集合中使用。\r\n参数名: valueint count =(int)(query.List<long>()[0]); session.Close();return count;#endregion}/// <summary>/// 创建用户/// </summary>/// <param name="info">用户实体</param>/// <returns></returns>publicintCreate(UserInfo info){ISession session =GetSession();int newId=(int)(session.Save(info)); session.Flush(); session.Close();return newId;}/// <summary>/// 读取用户信息/// </summary>/// <param name="userId">用户编号</param>/// <returns></returns>publicUserInfoRead(int userId){ISession session =GetSession();UserInfo info=session.Get<UserInfo>(userId); session.Close();return info;}/// <summary>/// 更新用户信息/// </summary>/// <param name="info">用户实体</param>/// <returns></returns>publicvoidUpdate(UserInfo info){ISession session =GetSession(); session.Update(info); session.Flush(); session.Close();}/// <summary>/// 删除用户/// </summary>/// <param name="userId">用户编号</param>/// <returns></returns>publicvoidDelete(int userId){ISession session =GetSession();//在NHibernate中支持直接使用参数值、":"+参数名、?(类似于在Access中使用参数化SQL语句的方式,给参数赋值要按照参数出现的顺序来)等几种方式IQuery query = session.CreateQuery("delete from UserInfo where UserId=:UserId");//如果采用":"+参数名方式使用参数,那么给参数赋值时不需要在参数名前加":"号,如query.SetInt32(":UserId", userId);就会报错 query.SetInt32("UserId", userId);int affectedRows = query.ExecuteUpdate(); session.Close();//return affectedRows;}/// <summary>/// 删除用户/// </summary>/// <param name="userId">用户实体</param>/// <returns></returns>publicvoidDelete(UserInfo info){ISession session =GetSession(); session.Delete(info); session.Flush(); session.Close();}/// <summary>/// 获取用户表中编号最大的用户/// </summary>/// <returns></returns>publicintGetMaxUserId(){ISession session =GetSession();IQuery query=session.CreateQuery("select max(UserId) from UserInfo");int userId=query.List<int>()[0]; session.Close();return userId;}}}
单元测试 NHibernateTest.cs
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingNUnit.Framework;usingNHibernateDemo;namespaceNUnitTest{[TestFixture]publicclassNHibernateTest{privateNHibernateCRUD instance =null;[SetUp]publicvoidInitialize(){ instance =newNHibernateCRUD();}[Test]/// <summary>/// 统计用户总数/// </summary>/// <returns></returns>publicvoidCount(){Assert.Greater(instance.Count(),0);}[Test]/// <summary>/// 创建用户/// </summary>/// <param name="info">用户实体</param>/// <returns></returns>publicvoidCreate(){UserInfo info =newUserInfo(){Age=12,Email="zzz@ccav.com",Mobile="13812345678",Phone="01012345678",RealName="测试"+DateTime.Now.Millisecond.ToString(),Sex=true,UserName="zhoufoxcn"+DateTime.Now.Millisecond.ToString()}; instance.Create(info);}[Test]/// <summary>/// 读取用户信息/// </summary>/// <param name="userId">用户编号</param>/// <returns></returns>publicvoidRead(){UserInfo info = instance.Read(1);Assert.NotNull(info);}[Test]/// <summary>/// 更新用户信息/// </summary>/// <param name="info">用户实体</param>/// <returns></returns>publicvoidUpdate(){UserInfo info = instance.Read(1); info.RealName="测试"+DateTime.Now.Millisecond.ToString(); instance.Update(info);}[Test]/// <summary>/// 删除用户/// </summary>/// <param name="userId">用户编号</param>/// <returns></returns>publicvoidDeleteByID(){int userId = instance.GetMaxUserId(); instance.Delete(userId);}[Test]/// <summary>/// 删除用户/// </summary>/// <param name="userId">用户实体</param>/// <returns></returns>publicvoidDelete(){int userId = instance.GetMaxUserId();UserInfo info = instance.Read(userId);Console.WriteLine("MaxUserId="+ userId); instance.Delete(info);}}}
相关推荐
8. **实际案例分析**:结合具体应用场景,演示如何使用NHibernate实现CRUD操作,并解决实际开发中遇到的问题。 课程中的视频文件“NHibernate03.avi”很可能是这一部分的视频教学内容,详细展示了上述知识点的实操...
这个经典实例是专为C#零基础开发人员设计的,旨在帮助他们快速理解和应用NHibernate框架,实现技术框架的搭建与整合。 **1. NHibernate基础知识** NHibernate的核心功能是提供了一种方式,将业务对象(也称为实体...
标题中的“fluent-nhibernate-crud”指的是一个基于Fluent NHibernate的项目,用于实现CRUD(创建、读取、更新、删除)操作。Fluent NHibernate是一个流行的ORM(对象关系映射)工具,它提供了一种更简洁的方式来...
在本例中,NHibernate被用于实现CRUD(创建、读取、更新、删除)操作,使得对数据库的增删改查变得更加简单。 具体来说,NHibernate通过以下步骤实现数据操作: 1. 配置:定义Hibernate配置文件,包括数据库连接...
### NHibernate实现ORM详解 NHibernate作为一款强大的对象关系映射(ORM)框架,为.NET开发者提供了一种优雅的方式,将面向对象的编程模型与关系型数据库的数据存储模型相桥接。通过NHibernate,开发人员可以更加专注...
这个“使用NHibernate实现增删改查示例”旨在帮助开发者理解如何利用NHibernate进行基本的数据操作。 在开始之前,确保你已经安装了NHibernate库以及所需的数据库驱动,例如对于SQL Server,需要安装NHibernate....
Repository 接口定义了基本的 CRUD 方法,而具体实现则调用 NHibernate 的 Session 方法。 **4. 示例代码** 以下是一个简单的 CRUD 操作示例,展示了如何在 Controller 中使用 NHibernate: ```csharp using (var...
在这个"Asp+Nhibernate登录"的项目中,我们将探讨如何结合这两者来实现用户登录功能。 首先,我们需要了解Asp.NET中的身份验证机制。在Asp.NET中,有几种常见的身份验证方式,如Forms Authentication、Windows ...
在IT领域,构建Web应用程序的过程中,常常需要与数据库进行交互以实现数据的增删改查(CRUD)操作。本项目“asp.net mvc+jquery+Nhibernate 实现数据库增删改”就是一个典型的应用实例,它结合了.NET框架中的ASP.NET...
以上就是使用NHibernate连接Oracle数据库并实现基本CRUD操作的基本步骤。在实际项目中,可能还需要考虑事务管理、错误处理、性能优化等方面的问题。通过深入学习NHibernate,你可以利用其丰富的特性来构建更复杂、更...
本教程将深入探讨如何使用NHibernate框架实现持久化。 1. **安装与配置** 在开始使用NHibernate之前,首先需要通过NuGet包管理器安装NHibernate库。安装完成后,需要配置NHibernate的配置文件(通常为hibernate....
5. **CRUD操作**:NHibernate提供了增删改查(Create, Read, Update, Delete,简称CRUD)的基本方法。例如,通过Session的Save或SaveOrUpdate方法创建新记录,Query或Criteria API用于查询,Update和Delete方法进行...
1. **DBHelperNH.cs**:这通常是一个数据库帮助类,包含了一系列静态方法,用于执行NHibernate的CRUD(创建、读取、更新、删除)操作。例如,它可能包含了打开和关闭session、执行SQL查询、保存或更新对象到数据库等...
【压缩包子文件的文件名称列表】:"NHibernate(ADUS)"可能是项目源代码或特定模块的名称,暗示着这个压缩包包含与NHibernate相关的自定义实现或示例代码,如配置文件、实体类、映射文件等。 总结知识点: 1. ...
NHibernate支持CRUD(创建、读取、更新、删除)操作,以及复杂的查询,同时提供了二级缓存机制,提高了数据访问的效率。 在本书中,读者将学习如何配置Spring.NET,包括XML配置和基于属性的配置,以及如何使用...
【NHibernate_Demo】是一个基于C#编程语言的开源库示例项目,它演示了如何在.NET环境中有效地利用NHibernate库来实现对象关系映射(ORM)。NHibernate是.NET平台上一个强大的ORM框架,旨在简化数据库操作,使得开发...
对于档案管理系统,我们可以创建一个档案实体类,定义档案的属性如ID、名称、创建日期等,然后通过NHibernate的CRUD操作实现档案的增删改查。同时,可以设计一个档案服务接口,提供业务逻辑,如搜索、分类、权限控制...
总结,C# NHibernate的使用实例涵盖了ORM的核心概念、不同应用场景下的实现方式,以及通过代码生成器提高开发效率的方法。理解并熟练掌握这些知识点,将有助于提升.NET开发中的数据操作能力,实现更高效、更优雅的...
在这个名为 "NHibernateDemo.rar" 的压缩包中,我们找到了一个使用 C# 实现的 NHibernate 访问数据库的示例项目,这对于初学者来说是一个极好的学习资源。下面将详细讲解 NHibernate、C# 以及 ORM 技术在数据库操作...
例如,你可能有一个User类,它的映射文件(.hbm.xml)会指定对应的数据库表名、字段名等,使得NHibernate能够将对象实例转化为SQL语句,进行CRUD操作。 在压缩包中的"SpringNetLesson18"文件,很可能是项目源码的...