使用NHibernate(2)-- 让程序跑起来
1, 创建一个MVC的程序,NHibernateDemo,并用NuGet安装NHibernate。
安装引用后,NuGet会自动安装NHibernate所依赖的类库 Iesi.Collections
2,配置NHibernate。
首先在Web.config的configSections节点下添加如下配置,声明NHibernate的节点:
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
然后,添加数据库连接字符串的配置
<add name="SqlServer" connectionString="server=.;database=NHDemo;uid=sa;pwd=123456" />
最后,在configuration节点下添加NHibernate相关的配置:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property> <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> <property name="connection.connection_string_name">SqlServer</property> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> </session-factory> </hibernate-configuration>
配置说明:
dialect: 指定NHibernate所使用的方言类(全称),所谓方言是指,不同的数据库所使用sql语法不大一样,可以让NHibernate使用某些特定的数据库特性。这些方言类都继承自抽象类Dialect,所有的实现都在源代码的 src\NHibernate\Dialect 下。
connection.driver_class:数据库驱动类,NHibernate使用这个类来和相应的ADO.NET驱动交互。 这些类的实现在NHibernate源代码的 src\NHibernate\Driver目录下。
connection.connection_string_name: 指定要使用的数据库连接字符串名。
connection.provider : 用来管理数据库连接的打开和关闭,这个属性的目的是为了方便扩展对数据库连接的管理,若要扩展的话,实现IConnectionProvider,并修改此处的配置即可。NHibernate提供的默认实现是上面配置的NHibernate.Connection.DriverConnectionProvider。
3,添加实体及映射。
首先,在Model文件夹下添加用户实体类,代码如下:
public User
{
public virtual long Id {get;set;}
public virtual string name {get;set;}
}
注意,nhibernate要求每个属性都必须是virtual类型的。
然后添加映射文件 User.hbm.xml,注意此xml的生成属性需要修改为“嵌入的资源”,否则会出现异常“No persister for ”,因为nhibernate找不到映射文件。
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernateDemo"> <class name="NHibernateDemo.Model.User, NHibernateDemo" table="NH_User"> <id name="Id" column="Id" type="System.Int64"> <generator class ="native"/> </id> <property name="Name" column="Name" type="System.String" /> </class> </hibernate-mapping>
最后修改Web.config,在hibernate-configuration/session-factory节点下添加如下代码,告诉nhibernate映射文件所在的程序集
<mapping assembly="NHibernateDemo"/>
4, 添加数据库。
添加一个名为NHDemo的数据库,并添加和User实体对应的表。(表明:NH_User;两个字段:Id, Name,其中Id是主键并且自增)
5,在Global中的Application_Start方法的最后添加如下代码:
var configure = new Configuration().Configure();
SessionFactory = configure.BuildSessionFactory();
首先创建一个Configuration实例,然后通过它创建SessionFactory。注意,项目大的话,SessionFactory的创建是很慢的,推荐一个应用中止存在一个SessionFactory就可以了。顾名思义,SessionFactory是用来创建Session的,我们对数据的访问都是通过它创建的Session。(不要和web中的session搞混,名虽一样,但不是一回事儿)
6,添加数据。
创建一个UserController,并添加如下代码,用于创建数据。
编译并访问 .../User/InitData:
这时候数据库中已经插入数据了。
7,查询数据
添加一个 用于查询数据的的Action,代码如下:
访问后:
使用NHibernate(2)-- 让程序跑起来的更多相关文章
- [Fluent NHibernate]第一个程序
目录 写在前面 Fluent Nhibernate简介 基本配置 总结 写在前面 在耗时两月,NHibernate系列出炉这篇文章中,很多园友说了Fluent Nhibernate的东东,也激起我的兴 ...
- 【翻译】首个基于NHibernate的应用程序
首个基于NHibernate的应用程序 Your first NHibernate based application 英文原文地址:http://www.nhforge.org/wikis/how ...
- .Net程序跑在Linux上
.Net越来越拥抱开源了,今天就试了如何让.Net程序跑在Linux上,果然再无人可以阻挡.Net的脚步了. Linux Disibutaion:Open Logic 7.2 1.Install .N ...
- .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一)
原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一) 写下此文章只为了记录Surging微服务学习过程,并且分享给广大想学习surging的基友,方便广大 ...
- 8天入门docker系列 —— 第八天 让程序跑在swarm集群上
真正的落地部署都是希望程序跑在集群下,而不是单机版下测测玩玩,所以这篇就来聊一下怎么使用docker swarm进行部署,因为是swarm是docker自带的, 所以部署起来还是非常简单的. 一:前置 ...
- 记一次stm8l程序跑飞
项目使用stm8l051f3做主控,CC2500做数据接收,不发送. 跑飞的现象就是,刚开始能运行,经过一段未知长度的时间,有可能是3分钟,有可能是30分钟,指示灯不再闪烁,中断按键单片机无反应. 接 ...
- RK3288 st7703 mipi屏指令过长,程序跑飞
本文为博主原创文章,转载请注明出处:https://www.cnblogs.com/lialong1st/p/11218433.html CPU:RK3288 系统:Android 5.1 调试 mi ...
- macOS使用ABP.vNext Core开发CMS系统(一) 让程序跑起来
macOS使用ABP.vNext Core开发CMS系统(一) 让程序跑起来--2020年10月5日 国庆假期,陪老婆的同时也不能忘记给自己充充电,这不想搞个CMS系统,考虑自己的时间并不多,所以想找 ...
- [翻译] 5点建议,让iOS程序跑得更快
[文章原地址]http://mobile.tutsplus.com/tutorials/iphone/ios-quick-tip-5-tips-to-increase-app-performanc ...
随机推荐
- Monocular Visual-Inertial Odometry单目视觉惯性里程计
Monocular Visual-Inertial Odometry:https://www.qualcomm.com/invention/research 单目视觉-惯性里程计 INDOOR POS ...
- [转]使用WCF 4.0 构建 REST Service
本文转自:http://www.cnblogs.com/lanvige/archive/2010/12/03/set_up_rest_service_with_wcf_4.html 用过一段时间的Ru ...
- MFC中的一般经验之谈5
MFC中提供了CString的类,可以用在一切使用字符串的地方.可以完美取代const char* 或者 LPCTSTR(经常在WinAPI)中传递参数.并且如果需要通过空间进行字符串的数据传递DDX ...
- 软件项目第一个Sprint评分
第一组 跑男 跑男组他们设计的是极速蜗牛小游戏,他们的界面背景图片做的挺漂亮,现在为止也实现了大部分功能, 但是我没有太听懂他们的游戏规则. 因为蜗牛出发后,每次碰到屏幕边缘后都会有确定的反弹结果,也 ...
- 强制TFS用户与计算机(域)用户同步
默认情况下,添加到域AD组中的账户不会立刻同步到TFS中. TFS每小时与域控制器同步一次,将计算机安全组中的账户添加到TFS中. 但是可以通过下面几种方式强制TFS立刻同步域中的账户: 1. 在TF ...
- [Erlang28]使用匿名函数灵活组合不同的case
cowboy_http.erl里面的date1/2 启示: 以前一般写case里都是这样子: date1(Date) -> case month1(Date) of {error,badarg} ...
- Centos 7 安装记录
0.安装中选择最小安装 1.centos7安装图形界面 之前转载过一篇“centos6安装图形界面”的文章,地址见http://my.oschina.net/u/1169607/blog/335304 ...
- Visual Studio for mac从入门到放弃1
MAC 第一步:从微软官网下载:https://www.visualstudio.com/vs/visual-studio-mac/ 第二步:安装软件过程出现 It was not possible ...
- linq与数据库之添加
这个是linq的添加显示 代码如下: //添加 private void button2_Click(object sender, EventArgs e) { string strstu = &qu ...
- HTTP调用接口方法
1.创建接口调用方法类 package cn.com.victorysoft.sjzx.Message; import java.io.BufferedReader; import java.io.I ...