mysql nhibernate_MySql(一)_利用NHibernate和MySql交互

1.基础配置,添加MySql和nHibernate的引用

(1)   添加引用,导入MySql.data.dll;   利用MySql提供的API操作;

(2) 添加引用,导入NHibernate.dll;  利用nHibernate提供的API操作;

89ae40d50897199e9bd2ced3b87650c2.png

利用NuGet管理程序包直接下载使用。

2.修改“程序集名称”和“默认命名空间”,二者保持一致。

3.如何跟MySql建立连接?

(1)告诉nHibernate,连接什么样的数据库(MySql、SQLServer、Oracal),即数据库的种类。

(2)告诉nHibernate,连接数据库的地址(IP地址、用户名、密码、连接的数据库)。

(3)进行映射,把数据库的表映射成类,利用类创建对象,像操作对象一样操作数据库。

第一步:配置nHiberate,去连接数据库的一些信息

配置nHiberate是使用XML来配置的。在项目下面右键“添加”——“新建项”,选择“XML文件”,名字为固定的  “nhibernate.cfg.xml”,nHibernate会自动读取此文件。

1 <?xml version="1.0" encoding="utf-8"?>

2

7

8

9 NHibernate.Driver.MySqlDataDriver

10

11 Database=unity;Data Source=localhost;User Id=root;Password=123456;12 Protocol=memory;Old Guids=True;13

14 NHibernate.Dialect.MySQL5Dialect

15

16

根据提示修改即可。

第二步,如何进行类和表的映射

1.在项目下创建Model文件夹,进行与数据库中的表进行映射。在Model文件夹下,创建类,类名与相对应数据库的表名一致。

在类中创建相对应的属性(字段),与数据库中的列名保持一致。

2.在项目文件下创建Mappings文件夹,创建“XML文件”,创建XML配置文件,配置文件命名“数据库的表名/类名.hbm.xml”。

在Mapping下的xml配置文件中,配置命名空间、程序集;配置类名对应表名;配置类中的属性名对应表中的列名。

1 <?xml version="1.0" encoding="utf-8" ?>

2

3 namespace="NBOWeb.Model" assembly="NBOWeb">

4

5

6

7

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

3.“nhibernate.cfg.xml”文件,属性-高级-“复制到输出目录设置为始终复制”;

“数据库的表名/类名.hbm.xml”即“unity.hbm.xml”,属性-高级-生成操作-嵌入的资源;

总结:首先配置命名空间和程序集;在进行类名与表名的配置;最后进行主键和一般的其他属性的配置。//配置映射关系完成。

4.利用nHibernate进行操作

1.让nHibernate进行配置的解析

添加nHibernate和nHibernate.Cfg命名空间

1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Linq;4 usingSystem.Text;5 usingSystem.Threading.Tasks;6 usingNHibernate;7 usingNHibernate.Cfg;8 usingNBOWeb.Model;9

10 namespaceMySql_StudyTest11 {12 classProgram13 {14 static void Main(string[] args)15 {16 var configuration=newConfiguration();17 configuration.Configure();18 configuration.AddAssembly("NBOWeb");19 ISessionFactory sessionFactory = null;20 ITransaction transaction = null;21 ISession session = null;22 try

23 {24 sessionFactory =configuration.BuildSessionFactory();25 session =sessionFactory.OpenSession();26

27 //Unity unity = new Unity() {Name = "L.Juhnko", Age = 29, WorkAge = 10 };28 //session.Save(unity);29

30 //事务,对数据库更改

31 transaction= session.BeginTransaction();//开启事务

32 Unity unity1 = new Unity() { Name = "ko01", Age = 29, WorkAge = 10};33 Unity unity2 = new Unity() { Name = "ko02", Age = 29, WorkAge = 10};34

35 session.Save(unity1);36 session.Save(unity2);37 transaction.Commit();//事务提交

38 }39 catch(Exception e)40 {41 Console.WriteLine(e);42

43 }44 finally

45

46 {47 if (transaction!=null)48 {49 transaction.Dispose();50 }51

52 if (session!=null)53 {54 session.Close();55 }56 if (sessionFactory!=null)57 {58 sessionFactory.Close();59 }60 }61 Console.ReadKey();62 }63 }64 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值