`
jilong-liang
  • 浏览: 482737 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

C#的NHibernate的CRUD开发入门代码例子

    博客分类:
  • C #
阅读更多

本文档适合初级开发者或者是第一次接触NHibernate框架的朋友,其中NHibernate不是最新的版本,
但是一个比较经典的版本 NHibernate 2.1.2,其中用红线标注的部分一定要仔细看,
这些都是容易忽略和出错的地方,笔者在此给大家做了特殊标记。
NHibernate框架的介绍:http://baike.baidu.com/view/954535.htm
开发环境 Vs 2010 + MsSql2005 + NHibernate 2.1.2.
本示例的下载地址:点击下载;NHibernate 2.1.2的下载地址:点击下载;

 

官方:http://sourceforge.net/projects/nhibernate/ 

学习网:http://nmg.codeplex.com/
目录
步骤一、创建数据库和映射的表。
步骤二、创建项目和实体类映射类以及类对应的映射文件。
步骤三、添加项目引用与NHibernate的dll文件。
步骤四、配置hibernate.cfg.xml文件(数据库映射信息配置)无需配置web.config。
步骤五、创建和使用NHibernate.
/***
 * 此代码工程是三年前写的例子.
 *@Author:liangjilong
 *@Date:2012/08/xx
 *@Email:jilongliang@sina.aom
 */


NHibernate跟hibernate没几乎没区别,一个是java语言开发出来的,一个是c#开发的出来

的类库包,当你用c#反编译出来你就看到很多.cs的文件,在此也不用多介绍,最好的就是贴例子

和项目出来。

 

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping   xmlns="urn:nhibernate-mapping-2.2"
   assembly="Model" namespace="Model">
  <class name ="Model.Entities.Users,Model" table="Users">
    <id name="Id" column="Id" type="Int32" unsaved-value="0">
      <generator class ="native"></generator>
    </id>
    <property name="UserName" column ="UserName" type="string" length="20" not-null="false"/>
    <property name="PassWord" column="PassWord" type="string" length="100" not-null="false"/>
    <property name="Address" column="Address" tpye="string" length="100" not-null="false"/>
  </class>
</hibernate-mapping>

 

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

namespace Model
{
	//在c#的实体类跟java的实体类有区别,区别是在于set和get
	//java的是getXX/setXX,c#不需要.它是简化了,毕竟才c#是为了自己有一套不能完全抄袭
	//java的,只能抄袭java的思想
    public class Users
    {
        private int Id { set; get; }
        private string UserName { set;get; }
        private string PassWord { set; get; }
        private string Address { set; get; }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using NHibernate.Cfg;
using NHibernate;
using Model;

namespace DAL
{
    public class UsersDAL
    {
        /// <summary>
        /// HttpContext是System.Web里面的类
        ///  封装有关个别 HTTP 请求的所有 HTTP 特定的信息。
        /// </summary>
        private string path = HttpContext.Current.Server.MapPath("~/hibernate.cfg.xml");

        /// <summary>
        /// 插入
        /// </summary>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        public bool Insert(Users users)
        {
			//读取Nhibernate的配置Configuration
            Configuration cfg = new Configuration().Configure(path);
            //创建Session
            ISession session = cfg.BuildSessionFactory().OpenSession();
            ITransaction transaction = session.BeginTransaction();

            try
            {
				//保存用户
                session.Save(users);
                transaction.Commit();
                return true;
            }
            catch (Exception e)
            {
                transaction.Rollback();
                return false;
            }
            finally
            {
                session.Close();
            }
        }
        /// <summary>
        /// 查询所有用户信息
        /// </summary>
        /// <returns></returns>
        public IList<Users> GetUsers()
        {
            Configuration cfg = new Configuration().Configure(path);
            ISession session = cfg.BuildSessionFactory().OpenSession();
            //使用NHQL
            IList<Users> list = session.CreateQuery(" from Users").List<Users>();
            return list;
        }

        /// <summary>
        /// 更新用户
        /// </summary>
        /// <param name="users"></param>
        /// <returns></returns>
        public bool Update(Users users)
        {
			//读取Nhibernate的配置Configuration
            Configuration cfg = new Configuration().Configure(path);

			//打开Nhibernate的Session
            ISession session = cfg.BuildSessionFactory().OpenSession();
            ITransaction transaction = session.BeginTransaction();
            try
            {
                session.Update(users);
                transaction.Commit();//提交事务
                return true;
            }
            catch (Exception e)
            {
				//回滚事务
                transaction.Rollback();
                return false;
            }
            finally
            {
				//关闭事务
                session.Close();
            }
        }
        /// <summary>
        /// 删除用户
        /// </summary>
        /// <param name="users"></param>
        /// <returns></returns>
        public bool Delete(Users users)
        {
			////读取Nhibernate的配置Configuration
            Configuration cfg = new Configuration().Configure(path);
			//打开Nhibernate的Session
            ISession session = cfg.BuildSessionFactory().OpenSession();
            ITransaction transaction = session.BeginTransaction();
            try
            {
				//删除用户
                session.Delete(users);
                transaction.Commit();//提交事务
                return true;
            }
            catch (Exception e)
            {
				//回滚事务
                transaction.Rollback();
                return false;
            }
            finally
            {
                session.Close();//关闭事务
            }
        }
        /// <summary>
        /// 根据用户ID去查询
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public Users GetUserById(int userId)
        {
            Configuration cfg = new Configuration().Configure(path);
            ISession session = cfg.BuildSessionFactory().OpenSession();
            return session.Get<Users>(userId);
        }

    }
}

 

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

namespace BLL
{
    public class UsersBLL
    {
        /// <summary>
        /// 插入信息
        /// </summary>
        /// <param name="users"></param>
        /// <returns></returns>
        public bool Insert(Users users)
        {
            return new UsersDAL().Insert(users);
        }
        /// <summary>
        /// 获取所有用户信息
        /// </summary>
        /// <returns></returns>
        public IList<Users> GetUsers()
        {
            return new UsersDAL().GetUsers();
        }
        /// <summary>
        /// 更新用户
        /// </summary>
        /// <param name="users"></param>
        /// <returns></returns>
        public bool Update(Users users)
        {
            return new UsersDAL().Update(users);
        }
        /// <summary>
        /// 删除用户
        /// </summary>
        /// <param name="users"></param>
        /// <returns></returns>
        public bool Delete(Users users)
        {

            return new UsersDAL().Delete(users);
        }
       /// <summary>
       /// 通过ID去查询
       /// </summary>
       /// <param name="userId"></param>
       /// <returns></returns>
        public Users GetUserById(int userId)
        {
            return new UsersDAL().GetUserById(userId);
        }
    }
}

 

<?xml version="1.0" encoding="utf-8"?>
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
  <session-factory name="NHibernate">
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="connection.connection_string">
       Data Source=.;Initial Catalog=CRMEasy;Persist Security Info=True;User ID=sa;Password=admin1988
    </property>
    <property name="adonet.batch_size">10</property>
    <property name="show_sql">false</property>
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
    <property name="use_outer_join">true</property>
    <property name="command_timeout">10</property>
    <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
    <mapping assembly="Model"/>
  </session-factory>
</hibernate-configuration>

 

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using BLL;
using System.Collections.Generic;
using Model;

namespace WebApp
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            UsersBLL u = new UsersBLL();
            IList<Users> list = u.GetUsers();
            GridView1.DataSource = list;
            GridView1.DataBind();
        }
    }
}

 代码在百度网盘链接: http://pan.baidu.com/s/1c1neoz2 密码: dff8

 



 


 
 

 

 

NSpring学习例子

  • 大小: 45.7 KB
  • 大小: 78.5 KB
  • 大小: 26.3 KB
分享到:
评论

相关推荐

    C# NHibernate经典实例

    这个经典实例是专为C#零基础开发人员设计的,旨在帮助他们快速理解和应用NHibernate框架,实现技术框架的搭建与整合。 **1. NHibernate基础知识** NHibernate的核心功能是提供了一种方式,将业务对象(也称为实体...

    NHibernate3.2官方源代码和使用例子

    在这个"NHibernate3.2官方源代码和使用例子"的压缩包中,你将获得该版本的源代码以及相关的示例项目,这对于学习和理解NHibernate的工作原理以及如何在实际项目中应用非常有帮助。 首先,让我们深入了解一下...

    c# Nhibernate 使用实例

    本实例将带你深入理解C#与NHibernate的结合使用,包括在WinForm和Web应用中的实践,以及如何使用代码生成器提高开发效率。 **一、NHibernate基本概念** 1. **实体(Entities)**: 在ORM中,实体对应数据库中的表,...

    c# NHibernate 连接数据库

    本教程将详细介绍如何在C#的WinForm应用中利用NHibernate连接数据库并执行基本的CRUD(Create, Read, Update, Delete)操作。 首先,我们需要理解NHibernate的核心概念。它是通过映射对象到数据库表来工作的,这种...

    NHibernate3.2 官方源代码 + 使用例子

    NHibernate3.2 官方源代码 + 使用例子 NHibernate3.2 官方源代码 + 使用例子 NHibernate3.2 官方源代码 + 使用例子 NHibernate3.2 官方源代码 + 使用例子 NHibernate3.2 官方源代码 + 使用例子

    实战C#.NET编程 Spring.NET & NHibernate从入门到精通 源码部分

    《实战C#.NET编程----Spring.NET & NHibernate从入门到精通》代码 版本:V0.50 BoolsSample 项目代码 NHibernateSample 项目代码 SpringSample 项目代码 SpringNhibernateSample 项目代码 这个是代码部分 pdf我也...

    C# NHibernate 分页 HQL 源码

    使用vs2010打开解决方案。 把网站 App_Data 中的数据库附加一下。我这里用的是sql2008 SQLEXPRESS 修改Web.config 连接数据库配置 &lt;property name="connection.connection_string"&gt;Server=PC2011022315OVP\SQL...

    C# NHibernate 使用

    **C# NHibernate 使用详解** ...总之,C#中使用NHibernate可以极大地提高开发效率,但也需要注意性能和最佳实践。通过理解和熟练运用上述知识点,你将能够更好地在WinForm应用中集成和使用NHibernate。

    Nhibernate从入门到精通

    ### NHibernate从入门到精通 #### 一、NHibernate简介 **NHibernate**是一个面向.NET环境的对象/关系数据库映射工具。它通过提供一个统一的API来管理对象和关系数据库之间的映射,使得开发者能够在不直接编写SQL的...

    NHibernate-MVC3 入门例子

    Hibernate是一个目前应用的最广泛的开放源代码的对象关系映射框架,它对Java的JDBC(类似于ADO.Net)进行了非常轻量级的对象封装,使得程序员可以随心所欲的使用对象编程思维来操纵数据库,目前在国内Java开发界已经...

    实战C#.NET编程----Spring.NET & NHibernate从入门到精通

    《实战C#.NET编程——Spring.NET & NHibernate从入门到精通》是一本深入探讨C# .NET开发领域中两个重要框架的专著。Spring.NET和NHibernate分别是.NET平台上的轻量级应用程序框架和流行的对象关系映射(ORM)工具,...

    C#NHibernate4.0 Memcache

    此代码是NHibernate4.0结合了强大的memcache缓存的案例。 说明: 1.还原数据库 2.运行memcache下的bat文件 3.修改hibernate.cfg.xml数据库连接字符串 4.运行解决方案,一切OK

    C#+FluentNHibernate+SQL2008 完整实现简单示例

    《C#结合FluentNHibernate与SQL2008实现简单示例详解》 在现代软件开发中,ORM(对象关系映射)框架是连接数据库和业务逻辑的重要桥梁,而NHibernate作为.NET平台上广泛使用的ORM框架,极大地简化了数据访问层的...

    nhibernate

    nhibernate c#nhibernate c#nhibernate c#nhibernate c#nhibernate c#nhibernate c#nhibernate c#

    NHibernate 一个完整的例子代码

    在这个“NHibernate 一个完整的例子代码”中,我们可以深入理解如何使用NHibernate进行数据访问。 首先,让我们来理解一下ORM的概念。ORM允许程序员用对象模型来描述数据库,通过自动映射,实现了对象与数据库记录...

    nhibernate映射类代码生成器

    **NHibernate映射类代码生成器...总的来说,"nhibernate映射类代码生成器"是一个实用的开发工具,它通过自动化工作流程,减轻了开发人员在使用NHibernate时的负担,使得开发团队可以更专注于业务逻辑和应用功能的实现。

    C# ORM NHibernate-5.2.4-bin.zip

    ORM是一种编程技术,它允许开发人员使用面向对象的语言(如C#)来操作数据库,而无需直接编写SQL语句,极大地提高了开发效率和代码可维护性。 描述中提到的“c#编写无SQL程序,ORM自动映射”意味着通过NHibernate,...

    《实战C#.NET编程-Spring.NET & NHibernate从入门到精通》代码部分

    《实战C#.NET编程-Spring.NET & NHibernate从入门到精通》是一本深入浅出的教程,专注于使用C#语言和.NET框架结合Spring.NET与NHibernate两大流行框架进行实际项目开发。Spring.NET是.NET平台上的一款轻量级应用程序...

    Spring.net Nhibernate 快速入门例子

    Spring.NET提供了一个全面的依赖注入容器,而NHibernate则是一个优秀的对象关系映射(ORM)工具,两者结合可以简化开发流程,提高代码的可维护性和可测试性。 首先,我们需要了解Spring.NET。Spring.NET是基于...

    《实战C#.NET编程-Spring.NET & NHibernate从入门到精通》代码

    《实战C#.NET编程-Spring.NET & NHibernate从入门到精通》是一本深入探讨C# .NET平台下Spring.NET和NHibernate两个关键框架的实践指南。这本书旨在帮助开发者从基础知识开始,逐步掌握这两个强大的工具,从而提升...

Global site tag (gtag.js) - Google Analytics