Nhibernate入门篇连接Sqlserver的增删查改
第一步:创建数据库
create table Emp(
EmpId int primary key identity,
EmpName varchar(50),
EmpDate date
)
第二步:去官网下载:http://nhibernate.info/ nhibernate
第三步:创建一个vs项目
第四步:添加nhibernate的类库

第五步:添加和数据库中类型相对应的类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NhibernateDemoApp
{
public class Emp
{
public virtual int EmpId { get; set; }
public virtual string EmpName { get; set; }
public virtual DateTime EmpDate { get; set; }
}
}
第六步:创建emp.hbl.xml文件
第七步:添加智能提示


第七步:将xml设置为内嵌的

写xml的代码
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NhibernateDemoApp" namespace="NhibernateDemoApp">
<class name="Emp" table="Emp">
<id name="EmpId">
<generator class="native"/>
</id>
<property name="EmpName"></property>
<property name="EmpDate"></property>
</class>
</hibernate-mapping>
- 注意hibernate-mapping的assembly、namespace属性要填写正确
- class的name属性表示类名,table是映射的表名,如果类名称和表名称相同,可以省略table属性
- property的name属性是类的属性名,如果类属性名和表的列名相同,可以省略column属性
- property的type属性表示.net类属性映射的NHibernate数据类型。如果是int、bool、double这样的.net基础数据类型,则可以省略
- property的type属性如果是DateTime、string,也可以省略
- property的not-null属性对应关系表的列的nullable属性,默认值是false。因此,如果允许为空,则可以省略
- id表示主键,name为主键名,<generator class="native"/>表示数据表的主键按简单Identity的自增算法生成新记录主键值(NHibernate提供了多种主键值生成算法,这里只用最简单的Identity算法)
- 文件名必须以.hbm.xml结尾
下载开始写正式的增删查改的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Driver;
using System.Reflection;
namespace NhibernateDemoApp
{
class Program
{
private static ISessionFactory _sessionFactory;
public static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
{
var cfg = new Configuration();
cfg.DataBaseIntegration(x =>
{
x.ConnectionString = "Data Source=localhost;Initial Catalog=NHibernateDemoDB;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
x.Driver<SqlClientDriver>();
x.Dialect<MsSql2008Dialect>();
});
//告诉nhibernate加载xml的地方
cfg.AddAssembly(Assembly.GetExecutingAssembly());
//构建nhibernate
_sessionFactory = cfg.BuildSessionFactory();
}
return _sessionFactory;
}
}
static void Main(string[] args)
{
IList<Emp> emps = GetAll();
foreach (var item in emps)
{
Console.WriteLine(item.EmpName);
}
Console.ReadKey();
}
#region crud
public static int Insert(Emp emp)
{
using(var session = SessionFactory.OpenSession())
{
var i= session.Save(emp);
session.Flush();//相当于savechange
return Convert.ToInt32(i);
}
}
public static void Delete(int id)
{
using(var session = SessionFactory.OpenSession())
{
var entity= session.Load<Emp>(id);
session.Delete(entity);
session.Flush();
}
}
public static void Update(Emp emp)
{
using(var session = SessionFactory.OpenSession())
{
session.SaveOrUpdate(emp);
session.Flush();
}
}
public static Emp GetEmpById(int id)
{
using(var session = SessionFactory.OpenSession())
{
Emp emp = session.Get<Emp>(id);
return emp;
}
}
public static IList<Emp> GetAll()
{
using(var session = SessionFactory.OpenSession())
{
IList<Emp> emps = session.CreateCriteria<Emp>().List<Emp>();
return emps;
}
}
#endregion
}
}
第一次写博客,如果有知识点没有说明白,请见谅
Nhibernate入门篇连接Sqlserver的增删查改的更多相关文章
- knockout+MVC+webapi+sqlserver完成增删查改
快过年了,公司的事情较少,想着开始学习点新东西.这段时间一个项目用到了mvc和webapi,然后一直对knockout比较感兴趣,就想着用这个框架做一个小实例.数据库采用的是sqlserver.话不多 ...
- VisualStudio 连接 MySql 实现增删查改
首先创建数据库,建立一个用户登录表 2.visualStudio默认是不支持MySql的,要想通过Ado.Net 操作MySql 需要在管理NeGet包添加对MySql.Data 和 MySql.D ...
- [MongoDB] MongoDB增删查改
MongoDB的三元素,数据库.集合.文档,集合就是表,文档就是行 开启MongoDB,cd切换到MongoDB的安装目录下的bin目录里,使用命令mongod 开启,参数:--dbpath 路径,把 ...
- nodejs连接mysql并进行简单的增删查改
最近在入门nodejs,正好学习到了如何使用nodejs进行数据库的连接,觉得比较重要,便写一下随笔,简单地记录一下 使用在安装好node之后,我们可以使用npm命令,在项目的根目录,安装nodejs ...
- 利用dbutils工具实现数据的增删查改操作(dbutis入门)
一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...
- MongoDB入门学习(三):MongoDB的增删查改
对于我们这样的菜鸟来说,最重要的不是数据库的管理,也不是数据库的性能,更不是数据库的扩展,而是怎么用好这款数据库,也就是一个数据库提供的最核心的功能,增删查改. 由于M ...
- Java连接MySQL数据库及简单的增删查改操作
主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...
- Mysql常用增删查改及入门(二)
常用:数据库常用就是DML:增删查改 1.增加数据: insert into 表名 values (值1,值2...); insert into 表名 (字段1,字段2) values (值1,值2) ...
- JDBC终章- 使用 DBUtils实现增删查改- C3P0Utils数据源/QueryRunner runner连接数据源并执行sql
JDBC终章- 使用 DBUtils实现增删查改 1.数据库结构 Create Table CREATE TABLE `user` ( `id` ) NOT NULL AUTO_INCREMENT, ...
随机推荐
- <记录> PHP监控进程状态,完成掉线自动重启
1. 利用Shell脚本实现 #!/bin/bash PORT= while [ true ];do read -p "please enter the port that you want ...
- RAD Studio 10.3 来了
官方原版下载链接:HTTP FTP 官方更新说明:http://docwiki.embarcadero.com/RADStudio/Rio/en/What's_New [官方更新说明简译]1.Delp ...
- 将font-size设置为 12px 以下,Chrome浏览器只能显示12px怎么办?
将字体大小设置为12px以下,而Chrome浏览器依然只显示12px,因为 Chrome 这款任性的浏览器做了如下限制: 1. font-size 有一个最小值 12px(不同操作系统.不同语言可能限 ...
- Android Studio--按钮跳转新页
MainActivity.xml: <Button android:id="@+id/btnGo" android:layout_width="wrap_conte ...
- springMVC自定义全局异常
SpringMVC通过HandlerExceptionResolver处理程序异常,包括Handler映射,数据绑定以及目标方法执行时所发生的异常. SpringMVC中默认是没有加装载Handler ...
- 使用idea生成maven项目的jar包(转)
第一步 第二步 第三步 转自:https://blog.csdn.net/waterimelon/article/details/69243651
- vue初体验
作为一个前端的小菜鸟,在平时的开发与学习中,除了要深入了解javascript 及 css 的各种特性,熟悉一门框架也是必不可少的.vue以其小巧,轻便,学习平滑等各种特性深受欢迎. 这里总结一下小菜 ...
- ajax请求导致status为canceled(无任何回调数据)的原因
1.故障现象 一个普通的ajax请求,请求能够到达controller,也能正常处理业务,但是ajax的回调函数为空,即没有任何状态和数据返回,使用谷歌浏览器查看请求状态如下图: 出现该错误:简单来说 ...
- IO高级应用关于字符码表
ASCII码表: 计算机里只有数字,我在计算机软件里的一切都是用数字来表示,屏幕上显示的一个个字符也不例外.计算机诞生在美国,最开始所用到字符就是我们现在键盘上的一些符号和少数几个特殊的符号,每一个字 ...
- python爬虫知乎问答
python爬虫知乎问答 import cookielibimport base64import reimport hashlibimport jsonimport rsaimport binasci ...