第一步:创建数据库

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的增删查改的更多相关文章

  1. knockout+MVC+webapi+sqlserver完成增删查改

    快过年了,公司的事情较少,想着开始学习点新东西.这段时间一个项目用到了mvc和webapi,然后一直对knockout比较感兴趣,就想着用这个框架做一个小实例.数据库采用的是sqlserver.话不多 ...

  2. VisualStudio 连接 MySql 实现增删查改

    首先创建数据库,建立一个用户登录表 2.visualStudio默认是不支持MySql的,要想通过Ado.Net 操作MySql 需要在管理NeGet包添加对MySql.Data  和 MySql.D ...

  3. [MongoDB] MongoDB增删查改

    MongoDB的三元素,数据库.集合.文档,集合就是表,文档就是行 开启MongoDB,cd切换到MongoDB的安装目录下的bin目录里,使用命令mongod 开启,参数:--dbpath 路径,把 ...

  4. nodejs连接mysql并进行简单的增删查改

    最近在入门nodejs,正好学习到了如何使用nodejs进行数据库的连接,觉得比较重要,便写一下随笔,简单地记录一下 使用在安装好node之后,我们可以使用npm命令,在项目的根目录,安装nodejs ...

  5. 利用dbutils工具实现数据的增删查改操作(dbutis入门)

    一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...

  6. MongoDB入门学习(三):MongoDB的增删查改

            对于我们这样的菜鸟来说,最重要的不是数据库的管理,也不是数据库的性能,更不是数据库的扩展,而是怎么用好这款数据库,也就是一个数据库提供的最核心的功能,增删查改.         由于M ...

  7. Java连接MySQL数据库及简单的增删查改操作

    主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...

  8. Mysql常用增删查改及入门(二)

    常用:数据库常用就是DML:增删查改 1.增加数据: insert into 表名 values (值1,值2...); insert into 表名 (字段1,字段2) values (值1,值2) ...

  9. JDBC终章- 使用 DBUtils实现增删查改- C3P0Utils数据源/QueryRunner runner连接数据源并执行sql

    JDBC终章- 使用 DBUtils实现增删查改 1.数据库结构 Create Table CREATE TABLE `user` ( `id` ) NOT NULL AUTO_INCREMENT, ...

随机推荐

  1. 20165304 2017-2018-2《Java程序设计》学习总结

    20165304 2017-2018-2<Java程序设计>学习总结 一.每周作业及实验报告链接汇总 1.我期望的师生关系 2.20165304学习基础和C语言基础调查 3.linux系统 ...

  2. HTTPS协议、TLS协议、证书认证过程解析

    一.HTTPS 协议 HTTPS协议其实就是HTTP over TSL,TSL(Transport Layer Security) 传输层安全协议是https协议的核心. TSL可以理解为SSL (S ...

  3. Docker 清理命令

    原文地址http://www.runoob.com/w3cnote/docker-clear-command.html,这里仅作为记录,便于以后查阅 查看正在运行的容器(Container) dock ...

  4. 吴裕雄 python深度学习与实践(8)

    import cv2 import numpy as np img = cv2.imread("G:\\MyLearning\\TensorFlow_deep_learn\\data\\le ...

  5. C# WinForm窗体及其控件的自适应

    3步骤: 1.在需要自适应的Form中实例化全局变量   AutoSizeFormClass.cs源码在下方 AutoSizeFormClass asc = new AutoSizeFormClass ...

  6. 最新WordConut

    一.代码地址:https://gitee.com/cainiaoY/WordCount 二.项目分析:代码根据实现的功能不同分为两个模块,一个wcFuctiong类,一个wcTest类,其中wcFuc ...

  7. position:fix相对父元素定位

    大家都知道,当position的值为fix时,生成绝对定位的元素,相对于浏览器窗口进行定位. 它常常应用的场合是,当下拉滚动条时固定导航栏到顶部,将广告固定在页面两侧或浏览器中间. 如果需要将导航栏d ...

  8. Mysql添加新用户遇到的一些小问题

    登陆命令:mysql -u root -p 添加本地用户:create user  'sheet'@'localhost' identified by '123456' ; 添加允许外网IP访问的用户 ...

  9. Javascript的算法题目

    用js实现单链表的增删,直接上代码 const linkList=new LinkList() function LinkList(){ var Node=function(element){ thi ...

  10. 图片转base64上传,视频同理。

    body: <input type="file" id="img" type="file" onchange="up()&q ...