MySql(一)_利用NHibernate和MySql交互
1.基础配置,添加MySql和nHibernate的引用
(1) 添加引用,导入MySql.data.dll; 利用MySql提供的API操作;
(2) 添加引用,导入NHibernate.dll; 利用nHibernate提供的API操作;

利用NuGet管理程序包直接下载使用。
2.修改“程序集名称”和“默认命名空间”,二者保持一致。
3.如何跟MySql建立连接?
(1)告诉nHibernate,连接什么样的数据库(MySql、SQLServer、Oracal),即数据库的种类。
(2)告诉nHibernate,连接数据库的地址(IP地址、用户名、密码、连接的数据库)。
(3)进行映射,把数据库的表映射成类,利用类创建对象,像操作对象一样操作数据库。
第一步:配置nHiberate,去连接数据库的一些信息
配置nHiberate是使用XML来配置的。在项目下面右键“添加”——“新建项”,选择“XML文件”,名字为固定的 “nhibernate.cfg.xml”,nHibernate会自动读取此文件。
<?xml version="1.0" encoding="utf-8"?>
<!--
This template was written to work with NHibernate.Test.
Copy the template to your NHibernate.Test project folder and rename it in hibernate.cfg.xml and change it
for your own use before compile tests in VisualStudio.
-->
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory name="NHibernate.Test">
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<property name="connection.connection_string">
Database=unity;Data Source=localhost;User Id=root;Password=;
Protocol=memory;Old Guids=True;
</property>
<property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
</session-factory>
</hibernate-configuration>
根据提示修改即可。
第二步,如何进行类和表的映射
1.在项目下创建Model文件夹,进行与数据库中的表进行映射。在Model文件夹下,创建类,类名与相对应数据库的表名一致。
在类中创建相对应的属性(字段),与数据库中的列名保持一致。
2.在项目文件下创建Mappings文件夹,创建“XML文件”,创建XML配置文件,配置文件命名“数据库的表名/类名.hbm.xml”。
在Mapping下的xml配置文件中,配置命名空间、程序集;配置类名对应表名;配置类中的属性名对应表中的列名。
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="NBOWeb.Model" assembly="NBOWeb"> <class name="unity" table="unity"> <!-- A hex character is our surrogate key. It's automatically
generated by NHibernate with the UUID pattern. -->
<id name="Id">
<column name="Id" sql-type="INT" length="" not-null="true"/>
<generator class="uuid.hex" />
</id> <!-- A cat has to have a name, but it shouldn't be too long. -->
<property name="Name">
<column name="Name" sql-type="VarChar" length="" />
</property> <property name="Age">
<column name="age" sql-type="INT" length="" />
</property>
<property name="WorkAge" >
<column name="workage" sql-type="INT" length=""/>
</property>
</class> </hibernate-mapping>
3.“nhibernate.cfg.xml”文件,属性-高级-“复制到输出目录设置为始终复制”;
“数据库的表名/类名.hbm.xml”即“unity.hbm.xml”,属性-高级-生成操作-嵌入的资源;
总结:首先配置命名空间和程序集;在进行类名与表名的配置;最后进行主键和一般的其他属性的配置。//配置映射关系完成。
4.利用nHibernate进行操作
1.让nHibernate进行配置的解析
添加nHibernate和nHibernate.Cfg命名空间
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NHibernate;
using NHibernate.Cfg;
using NBOWeb.Model; namespace MySql_StudyTest
{
class Program
{
static void Main(string[] args)
{
var configuration=new Configuration();
configuration.Configure();
configuration.AddAssembly("NBOWeb");
ISessionFactory sessionFactory = null;
ITransaction transaction = null;
ISession session = null;
try
{
sessionFactory = configuration.BuildSessionFactory();
session = sessionFactory.OpenSession(); //Unity unity = new Unity() {Name = "L.Juhnko", Age = 29, WorkAge = 10 };
//session.Save(unity); //事务,对数据库更改
transaction= session.BeginTransaction();//开启事务
Unity unity1 = new Unity() { Name = "ko01", Age = , WorkAge = };
Unity unity2 = new Unity() { Name = "ko02", Age = , WorkAge = }; session.Save(unity1);
session.Save(unity2);
transaction.Commit();//事务提交
}
catch (Exception e)
{
Console.WriteLine(e); }
finally {
if (transaction!=null)
{
transaction.Dispose();
} if (session!=null)
{
session.Close();
}
if (sessionFactory!=null)
{
sessionFactory.Close();
}
}
Console.ReadKey();
}
}
}
MySql(一)_利用NHibernate和MySql交互的更多相关文章
- 利用NHibernate与MySQL数据库交互
本文章使用Visual Studio作为开发工具,并建立在已经安装MySQL数据库的前提. NHibernate是一个面向.NET环境的对象/关系数据库映射工具.官网:http://nhibernat ...
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- 利用sqlmap进行mysql提权的小方法(win与liunx通用)
文章作者:pt007@vip.sina.com文章来源:https://www.t00ls.net/thread-36196-1-1.html1.连接mysql数据打开一个交互shell:sqlmap ...
- Android之网络编程利用PHP操作MySql插入数据(四)
因为最近在更新我的项目,就想着把自己在项目中用到的一些的简单的与网络交互的方法总结一下,所以最近Android网络编程方面的博文会比较多一些,我尽量以最简单的方法给大家分享,让大家明白易懂.如果有什么 ...
- 在 Pisa-Proxy 中,如何利用 Rust 实现 MySQL 代理
一.前言 背景 在 Database Mesh 中,Pisanix 是一套以数据库为中心的治理框架,为用户提供了诸多治理能力,例如:数据库流量治理,SQL 防火墙,负载均衡和审计等.在 Pisanix ...
- 如何利用脚本实现MySQL的快速部署以及一机多实例的部署
MySQL有三个版本:二进制,源码包,RPM. 下面讲讲二进制包的安装过程 下载地址: http://dev.mysql.com/downloads/mysql/ 选择Linux-Generic 我这 ...
- 利用oneproxy部署mysql数据库的读写分离
实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验说明:本实验共有4台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 oneproxy-rhel ...
- 利用xtrabackup备份mysql数据库
利用xtrabackup备份mysql数据库 一.安装1.直接下载二进制文件wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2. ...
- 利用phpmyadmin修改mysql的root密码及如何进入修改密码后的phpmyadmin
1.利用phpmyadmin修改mysql的root密码 很多人利用phpmyadmin或者命令行来修改了mysql的root密码,重启后发现mysql登录错误,这是为什么呢?修改mysql的root ...
随机推荐
- 洛谷 P4401 [IOI2007]Miners 矿工配餐
题意简述 有两个矿洞,已知食物的种类(≤3)和顺序,将他们送往任一矿洞, 若一个矿洞3次食物相同,贡献1:若有2种不同食物,贡献2:若有3种不同食物,贡献3 求最大贡献 题解思路 food[i] 为当 ...
- 车载多传感器融合定位方案:GPS +IMU+MM
导读 高德定位业务包括云上定位和端上定位两大模块.其中,云上定位主要解决Wifi指纹库.AGPS定位.轨迹挖掘和聚类等问题:端上定位解决手机端和车机端的实时定位问题.近年来,随着定位业务的发展,用户对 ...
- c排序
#pragma once//如果写头文件 放置头文件重复包含 #include<stdio.h> //定义类型 结构体类型定义 //宏定义 #define //函数申明 void prin ...
- JavaScript最常见的错误种类
1.报错为: Uncaught ReferenceError:未捕获引用错误(引用错误:使用了没有定义的变量) 错误之前的代码会执行,之后代码不会执行 2.报错为: Uncaught Syntaxer ...
- aabccd统计每个字符出现的次数,结果显示{ a: 2, b: 1, c: 2, d: 1 };去掉重复的字符,使结果显示abcd
遍历字符串的方式和遍历数组的方式有点相似,或者说就是相同的.在学习数组的遍历方法之前,可以通过for循环去遍历数组,同样,字符串也可以:字符串跟数组都有一个length的属性.下面代码奉上,个人思路! ...
- lombok 下的@Builder注解用法
pom依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId& ...
- Keras实例教程(3)
https://blog.csdn.net/baimafujinji/article/details/80705578
- Python多进程的Join和daemon(守护)的用法
join和daemon 下面仅以多进程为例: 知识点一: 当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行流的最小单元,当设置多线程时,主线程会创建多个子线程,在python中,默认情况下 ...
- unity之加载场景
游戏中的Loading分为:静态Loading和动态Loading. 简单形象的做个比喻: 静态Loading可能就是一张背景图.而动态的Loading就是在读取的同时有一个东西在“转圈”. 1.静态 ...
- 【原创】Linux cpu hotplug
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...