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, ...
随机推荐
- 机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)
摘要: 数据挖掘.机器学习和推荐系统中的评测指标—准确率(Precision).召回率(Recall).F值(F-Measure)简介. 引言: 在机器学习.数据挖掘.推荐系统完成建模之后,需要对模型 ...
- Linux输入子系统详解
input输入子系统框架 linux输入子系统(linux input subsystem)从上到下由三层实现,分别为:输入子系统事件处理层(EventHandler).输入子系统核心层(Input ...
- django 数据库查询的几个知识点
django查询db过程中遇到的几个问题: 1. 数据库切换,用using products = models.TProductCredit.objects.using(') 2.查询结构集是Quer ...
- ---mingw Linux交叉编译给Window的工具
https://arrayfire.com/cross-compile-to-windows-from-linux/
- XSLT 创建CDATA节点
创建文本结点 (1)直接写入文本: text1 (2)通过<xsl:text>创建文本结点: <xsl:text>text2</xsl:text> (3)通过< ...
- IntelliJ IDEA2017 激活方法 最新的(亲测可用)
IntelliJ IDEA2017 激活方法(亲测可用): 搭建自己的授权服务器,对大佬来说也很简单,我作为菜鸟就不说了,网上有教程. 我主要说第二种,现在,直接写入注册码,是不能成功激活的(如果你成 ...
- k8s之创建etcd集群
主机规划 maste01——192.168.10.63 master02——192.168.10.64 node01——192.168.10.65 node02——192.168.10.66 1.为保 ...
- yii2 basic版本的一些配置
1.nginx配置 重写规则 修改访问模式为 http://wh.store/admin/index 文件位置: /home/wwwroot/default/yii2-app-basic/config ...
- c++ 中的智能指针实现
摘要:C++11 中新增加了智能指针来预防内存泄漏的问题,在 share_ptr 中主要是通过“引用计数机制”来实现的.我们今天也来自己实现一个简单的智能指针: // smartPointer.cpp ...
- js正则积累
判断是否为数字 function isNumber(val){ var regPos = /^\d+(\.\d+)?$/; //非负浮点数 var regNeg = /^(-(([0-9]+\.[0- ...