博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Nhibernate]sqlite数据库基本使用
阅读量:7193 次
发布时间:2019-06-29

本文共 4796 字,大约阅读时间需要 15 分钟。

目录

写在前面

昨天有朋友问我在nhibernate中如何使用sqlite数据库,当时实在忙的不可开交,下周要去山西出差,实在没空,按我的说法使用sqlite跟使用sqlserver,本质上其实没啥区别,nhibernate的配置文件不同而已,而且在下载nhibernate的时候,他已经提供了针对不同的数据库的模版了。你只需在这基础上修改即可。

别人问到了,再加上即将的项目中需要用到sqlite数据库,就也趁着这股风总结一下,算是弄一个在nhibernate中使用sqlite的模版吧。

操作步骤

可视化工具:

SqliteSpy:

说到sqlite,得创建一个sqlite数据库啊,上面的工具,你可以选择一个用着顺手的工具使用,我这里就使用sqlitespy这个工具,新建一个shop数据库,新建一个userinfo的数据表。

下载sqlite的dll:,或者使用Nuget安装

创建数据表的sql语句

1 create table UserInfo2 (3 ID int primary key  not null,4 UserName nvarchar(32),5 Gender bit,6 Age int,7 Address nvarchar(128)8 )

如图:

新建个测试用的项目,项目结构如图所示:

关于项目结构就不进行说明了,项目名称已经比较清楚了。

项目Wolfy.Data和Wolfy.UnitTest需要引用System.Data.SQLite.dll,并把SQLite.Interop.dll放在bin\debug下(因为这个dll是引用不了的)。

从下载的nhibernate中找到sqlite的数据库的配置模版

将名称修改为hibernate.cfg.xml,复制到单元测试项目下,并修改该文件的属性为始终复制,内容如下:

1 
2
7
8
9
NHibernate.Driver.SQLite20Driver
10
11 Data Source=nhibernate.db12
13
NHibernate.Dialect.SQLiteDialect
14
15

修改内容,使其使用于当前项目

1 
2
3
4
NHibernate.Driver.SQLite20Driver
5
6 Data Source=C:\Users\Wolfy\Desktop\SQLiteSpy_1.9.8\Shop.db3 7
8
NHibernate.Dialect.SQLiteDialect
9
10
11

注意,把不必要的注释去掉,避免不不要的麻烦。

通用NHibernateHelper类

测试用的持久化类

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace Wolfy.Domain.Entity 8 { 9     /// 10     /// 用户持久化类11     /// 12     public class UserInfo13     {14         /// 15         /// 用户标识16         /// 17         public virtual int ID { set; get; }18         /// 19         /// 用户姓名20         /// 21         public virtual string UserName { set; get; }22         /// 23         /// 性别24         /// 25         public virtual bool Gender { set; get; }26         /// 27         /// 年龄28         /// 29         public virtual int Age { set; get; }30         /// 31         /// 住址32         /// 33         public virtual string Address { set; get; }34     }35 }

对应的持久化类的映射文件,UserInfo.hbm.xml并修改其属性生成操作为“嵌入资源”

1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

在Wolfy.Data下添加类UserInfoData

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using NHibernate.Cfg; 7 using NHibernate; 8 using Wolfy.Domain.Entity; 9 namespace Wolfy.Data10 {11     /// 12     /// 用户数据层操作13     /// 14     public class UserInfoData15     {16         /// 17         /// 添加用户18         /// 19         /// 20         /// 
21 public bool AddUserInfo(UserInfo userInfo)22 {23 ISession session = NHibernateHelper.GetOcextSession();24 using (ITransaction trans = session.BeginTransaction())25 {26 try27 {28 session.SaveOrUpdate(userInfo);29 session.Flush();30 trans.Commit();31 return true;32 }33 catch (Exception)34 {35 trans.Rollback();36 return false;37 throw;38 }39 }40 }41 }42 }

在单元测试项目下添加DataTest.cs进行单元测试,如下

1 using System; 2 using Microsoft.VisualStudio.TestTools.UnitTesting; 3 using Wolfy.Domain.Entity; 4 using Wolfy.Data; 5  6 namespace Wolfy.UnitTest 7 { 8     [TestClass] 9     public class DataTest10     {11         private UserInfoData _userInfoData;12         public DataTest()13         {14             _userInfoData = new UserInfoData();15         }16         [TestMethod]17         public void AddUserInfoTest()18         {19             bool result = _userInfoData.AddUserInfo(new UserInfo()20             {21                 Address = "北京",22                 Age = 25,23                 Gender = true,               24                 UserName = "wolfy"25             });26             Assert.IsTrue(result);27         }28     }29 }

添加一个用户wolfy,并断言结果为true,即添加成功,测试结果,使用sqlitespy工具查看sqlite数据库中的数据

关于查删改的操作类似,就不再进行测试了。

总结

 弄一个sqlite数据库的配置,其实也没多大难度,关键还是nhibernate的配置文件,及持久化类的映射文件这块,你把这两个弄通了,其他的都好说,基本上类似,比如映射文件,你完全可以把内容复制到其他持久化类的映射文件中,并在这个基础上改吧改吧就是一个新的,关键还是第一步,你有没有走通。总结就到这里吧,你在使用的过程中,如果用到sqlite,可以将上面nhibernate配置文件和userinfo的映射文件作为模版,使用的时候,就在这基础上改吧改吧就行了。本文已加入Nhibernate系列:

demo地址:

转载地址:http://nztkm.baihongyu.com/

你可能感兴趣的文章
京东上市之后的发展重点
查看>>
最新OSSIM中国行之国电宣讲幻灯片(共116页)
查看>>
Elliptic Labs让可穿戴设备实现更多可能
查看>>
CentOS5.8 x86_64下配置rsync+inotify即时同步文件
查看>>
读懂山寨乐视LePar店,才能够真正的读懂彩电市场
查看>>
高层治理、底层做事
查看>>
【歪谈】创业和守业期间老板的“嘴脸”为何会不同?
查看>>
【VMware虚拟化解决方案】配置和部署VMware ESXi5.5
查看>>
配置虚拟交换机vSwitch
查看>>
.NET对存储过程的调用抽象封装
查看>>
在云端飞舞,遨游云浏览器体验感受
查看>>
运维人员到底要不要学习开发?
查看>>
SQL Server 2012笔记分享-29:日志文件的工作方式
查看>>
STL标准容器类简介
查看>>
Docker是个啥?
查看>>
Word 2003中编辑标记与格式标记大讨论
查看>>
cocostudio学习(UIScrollView控件内部子控件的可视化问题)
查看>>
图解CISCO 3550忘记密码解决方法
查看>>
Hyper-V 3.0功能部署PART 4:使用SMB共享存储
查看>>
华为交换机S5700升级实例
查看>>