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交互的更多相关文章

  1. 利用NHibernate与MySQL数据库交互

    本文章使用Visual Studio作为开发工具,并建立在已经安装MySQL数据库的前提. NHibernate是一个面向.NET环境的对象/关系数据库映射工具.官网:http://nhibernat ...

  2. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  3. 利用sqlmap进行mysql提权的小方法(win与liunx通用)

    文章作者:pt007@vip.sina.com文章来源:https://www.t00ls.net/thread-36196-1-1.html1.连接mysql数据打开一个交互shell:sqlmap ...

  4. Android之网络编程利用PHP操作MySql插入数据(四)

    因为最近在更新我的项目,就想着把自己在项目中用到的一些的简单的与网络交互的方法总结一下,所以最近Android网络编程方面的博文会比较多一些,我尽量以最简单的方法给大家分享,让大家明白易懂.如果有什么 ...

  5. 在 Pisa-Proxy 中,如何利用 Rust 实现 MySQL 代理

    一.前言 背景 在 Database Mesh 中,Pisanix 是一套以数据库为中心的治理框架,为用户提供了诸多治理能力,例如:数据库流量治理,SQL 防火墙,负载均衡和审计等.在 Pisanix ...

  6. 如何利用脚本实现MySQL的快速部署以及一机多实例的部署

    MySQL有三个版本:二进制,源码包,RPM. 下面讲讲二进制包的安装过程 下载地址: http://dev.mysql.com/downloads/mysql/ 选择Linux-Generic 我这 ...

  7. 利用oneproxy部署mysql数据库的读写分离

    实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验说明:本实验共有4台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 oneproxy-rhel ...

  8. 利用xtrabackup备份mysql数据库

    利用xtrabackup备份mysql数据库 一.安装1.直接下载二进制文件wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2. ...

  9. 利用phpmyadmin修改mysql的root密码及如何进入修改密码后的phpmyadmin

    1.利用phpmyadmin修改mysql的root密码 很多人利用phpmyadmin或者命令行来修改了mysql的root密码,重启后发现mysql登录错误,这是为什么呢?修改mysql的root ...

随机推荐

  1. Vue 路由模块化配置

    博客地址:https://ainyi.com/77 企业运营后台页面很多,路由如若不区分模块化配置,所有路由挤在同一个文件将不好维护,所以路由的配置也要模块化 分享两个解决方案 -- Vue 路由配置 ...

  2. 配置Oracle透明网关用以连接 SQLServer经验总结

    一.情景介绍   业务中设计两个不同的系统,系统1和系统2,两个系统分别使用的是Oracle和SQLServer数据库.现需要在系统1的数据库中直接查询系统2数据库的数据.即在Oracle中执行SQL ...

  3. React中控制台警告

    1.dll_lib.js:1 Warning: bind(): You are binding a component method to the component. React does this ...

  4. [FJOI2015]火星商店问题(线段树分治,可持久化,Trie树)

    [FJOI2015]火星商店问题 前天考了到线段树分治模板题,全场都切了,就我不会QAQ 于是切题无数的Tyher巨巨就告诉我:"你可以去看看火星商店问题,看了你就会了." 第一道 ...

  5. 错误:MSSQLSERVER 17058

    今天还原数据库的时候,在cmd命令行中输入sqlservr.exe -c -f -m出现了 Could not Open Error Log File 这个错误.网上查找了好多办法尝试了都没用.最后花 ...

  6. app发布当天,用户无法登录

    原因:当用户登录时候有商城用户的触发器存在,它会让商城用户也更新成登录状态. 由于用户量大,导致数据库锁死. 最后解决案:删掉触发器,在app的接口登录程序里,追加商城用户更新成登录的操作. 他案1: ...

  7. N*N矩阵的旋转 不开辟新空间

    /* N*N矩阵的旋转 不开辟新空间 programmer:qpz time:2014-11-09 */ #include <iostream> using namespace std; ...

  8. ElasticSearch:常用的基础查询与过滤器

    match_all(获取所有索引文档) quert_string(获取包含指定关键字文档) 默认查询_all字段,_all字段是由所有字段组合而成的,可以通过description:关键字,获取通过请 ...

  9. tf.name_scope() 和 tf.variable_scope() 的用法和玄机

    https://my.oschina.net/liusicong/blog/1593467

  10. 《Java 8 in Action》Chapter 8:重构、测试和调试

    我们会介绍几种方法,帮助你重构代码,以适配使用Lambda表达式,让你的代码具备更好的可读性和灵活性.除此之外,我们还会讨论目前比较流行的几种面向对象的设计模式, 包括策略模式.模板方法模式.观察者模 ...