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 ...
随机推荐
- springboot 读取 yml 配置的几种方式
前言:在springboot 项目中一般默认的配置文件是application.properties,但是实际项目中我们一般会使用application.yml 文件,下面就介绍一下在springbo ...
- Spring学习日志之纯Java配置的MVC框架搭建
依赖引入 <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifa ...
- CrackMe005-下篇 | 逆向破解分析 | 160个CrackMe(视频+图文)深度解析系列
作者:逆向驿站微信公众号:逆向驿站知乎:逆向驿站 CrackMe005,上篇说了具体方法,下篇来发逆向分析过程,看看老夫是如何得到上篇的具体方法的! 准备 [环境和工具] win7/xp虚拟机环境 C ...
- Linux实践:模块
标签(空格分隔): 20135321余佳源 一.实践原理 Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个单内核.单内核由于所有内容都集 ...
- <<浪潮之巅>>阅读笔记二
好的文章总是慢慢吸引着你去阅读,这本书的作者是吴军博士,让我很钦佩的是他还是一个很著名的程序员.其实我感觉理科生在写作方面的能力是很欠缺的,我们经常做到了有观点,但是做不到和别人表达清楚你的观点想法, ...
- json.dumps()和json.loads()
json.dumps()用于将字典形式的数据转化为字符串,json.loads()用于将字符串形式的数据转化为字典,代码: import json data = { 'name' : 'Connor' ...
- 基础-Math.floor与parseInt区别
Math.floor只能对一个数向下取整,不能解析字符串 如: Math.floor(1.5) // 1 Math.floor(-2.1) // -3 Math.floor("3" ...
- maven上传本地jar包到私服
场景 1. 本地jar包上传到私服 思路: 1. maven的settting.xml配置私服的帐号密码 2. pom.xml配置上传的地址 3. 执行 mvn deploy 部署jar包到私服 步骤 ...
- Spring基础之 反射(Reflection)
1.了解Class package com.inspire.reflection.Class_api; import java.lang.reflect.Constructor; import jav ...
- Trouble shooting(问题解决):centos 7 gnome show someting has gone wrong.
centos 7 升级 内核 3.10,startx启动不了了.进界面也是oh,no!someting has gone wrong . 参见帖子:http://bbs.csdn.net/topics ...