NHibernate使用简单示例
NHibernate使用小示例
1.新建Model类库项目。
使用代码生成器生成Model类。
此处以简单的UserInfo表作为示例。
注意字段前必须以 virtual 修饰。
namespace Model
{
public partial class UserInfo
{
public virtual System.Int32 Id { get; set; }
public virtual System.String Name { get; set; }
}
}
2.编写映射实体类与数据库的映射文件。
新建一个xml文件,并且命名为 UserInfo.hbm.xml 此处必须以 表名.hbm.xml 结尾,并将其生成操作改为“嵌入的资源”,因为NHibernate会以这种方式寻找映射关系。
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Model" namespace="Model">
<class name="Model.UserInfo" table="UserInfo">
<id name="Id" column="Id" type="int"></id>
<property name="Name" column="Name" type="string" />
</class>
</hibernate-mapping>
3.新建一个DAL类库项目。
新建一个NHibernateHelper类,作为生产和管理Session的工厂。
namespace DAL
{
public class NHibernateHelper
{
private ISessionFactory _sessionFactory;
public NHibernateHelper()
{
_sessionFactory = GetSessionFactory();
} private static ISessionFactory GetSessionFactory()
{
return (new Configuration()).Configure().BuildSessionFactory();
} public ISession GetSession()
{
return _sessionFactory.OpenSession();
}
}
}
保证每一个NHibernate类的对象只有一个Session。
4.新建一个UserInfoDAL类,实现对UserInfo数据的增删改查。
namespace DAL
{
public partial class UserInfoDAL
{
private ISession _isession; public UserInfoDAL()
{
_isession = new NHibernateHelper().GetSession();
} public void Add(UserInfo u)
{
_isession.Save(u);
_isession.Flush();
} public bool Update(UserInfo u)
{
try
{
_isession.Update(u);
_isession.Flush();
return true;
}
catch (Exception ex)
{
return false;
}
finally
{
_isession.Close();
}
} public bool Delete(UserInfo u)
{
try
{
_isession.Delete(u);
_isession.Flush();
return true;
}
catch (Exception ex)
{
return false;
}
finally
{
_isession.Close();
}
} public UserInfo GetById(int id)
{
return _isession.Get<UserInfo>(id);
} public IList<UserInfo> GetList()
{
IList<UserInfo> list = _isession.QueryOver<UserInfo>().List();
return list;
}
}
}
5.新建控制台测试项目调用
由于BLL和UI层不是本文重点,所以没有考虑依赖注入、分层、接口等,本文主要介绍是NHibernate的配置。
在控制台项目中添加xml文件,名字为 hibernate.cfg.xml 不可更改,并且修改为“如果较新则复制”。
NHibernate使用简单示例的更多相关文章
- NHIBERNATE的简单框架的设计
NHIBERNATE的简单框架的设计 上次的 NHibernate的Session管理策略和NHibernateHelper 发布并提供下载,给NHibernate刚入门的同学们带来很多便利. 最近有 ...
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- C# 构建XML(简单示例)
C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...
- 根据juery CSS点击一个标签弹出一个遮罩层的简单示例
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- ACEXML解析XML文件——简单示例程序
掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...
- demo工程的清单文件及activity中api代码简单示例
第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...
- spring-servlet.xml简单示例
spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...
- SignalR 简单示例
一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...
- Web API 简单示例
一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...
随机推荐
- 运行supervisorctl reload报错解决方法
在进行守护进程时运行supervisorctl reload出现“error: <class 'socket.error'>, [Errno 2] No such file or dire ...
- 【转】Git版本控制软件从入门到精通学习手册
GIT 学习手册简介 本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以 ...
- 开启C语言的学习之门
本人是一枚工业界的码农,为了职业道路越来越宽广决定向上位机方面进军,C语言曾经在大学里面学过点皮毛但是离应用远远不够,尽量每天在工作之余更新自己学习的进度,同时也希望有大神能给予在编程道路上的指导,话 ...
- PHP中报500错误时如何查看错误信息
在执行代码中加入下面两行代码即可 ini_set("display_errors","On"); error_reporting(E_ALL);
- 遇到的eclipse启动报错问题解决
遇到的eclipse启动报错问题解决 一.启动时出现Java was started but returned exit code=13 可能原因: 1.eclipse与JDK的不是都64位或者32位 ...
- linux内核分析第八次实验
20135118 罗鹏越 本周学习的是linux内核中的进程调度,之前我们在操作系统中有讲解进程调度的分类,以及一些调度算法.而linux中的进程调度有所不同,首先老师讲解了进程调度和进程调度的时机, ...
- 软件工程实践作业2 --梭哈游戏(java) 实践报告
一,题目简介: 1.创建一副扑克牌 7------k 加入到集合对象中2.对扑克牌洗牌3.定义参与游戏的玩家的人,通过键盘输入,限定人数2-54.人数符合要求继续执行,不符合退出5.对玩家发牌,每个人 ...
- centos7编译安装zabbix的错误
[Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through s ...
- Maven的课堂笔记3
8 仓库管理 仓库可以分为三种:1.本地仓库(本机).2.私服(公司局域网内的maven服务器).3.中央仓库(互联上,例如 struts2官网,或者hibernate官网) 可以根据maven坐标定 ...
- Java的Vector源码阅读
* The {@code Vector} class implements a growable array of * objects. Like an array, it contains comp ...