C#使用sqlite-net搭建简易的ORM
SQLite简易版ORM
首先打开项目,使用nuget搜索sqlite-net,如下图:
下载完成后,我们会多出两个文件,SQLite.cs和SQLiteAsync.cs。
我们新建一个文件夹SQLiteResources,把这俩文件放进去。
然后我们创建两个表实体,如下:
public class Valuation
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
[Indexed("ValuationStockId2",1)] //索引,注意,该索引在表创建时,会创建,如果索引改名,旧索引依然存在,并未被删除
public int StockId { get; set; }
public DateTime Time { get; set; }
public decimal Price { get; set; }
}
public class Stock
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Symbol { get; set; }
}
接下来我们创建一个SQLiteHelper,用来管理Sqlite数据库,如下:
public class SQLiteHelper
{
public string connstr = Path.Combine(Environment.CurrentDirectory, "User.db");//没有数据库会创建数据库
public SQLiteConnection db;
public SQLiteHelper()
{
db = new SQLiteConnection(connstr);
db.CreateTable<Stock>();//表已存在不会重复创建
db.CreateTable<Valuation>();
} public int Add<T>(T model)
{
return db.Insert(model);
} public int Update<T>(T model)
{
return db.Update(model);
} public int Delete<T>(T model)
{
return db.Update(model);
}
public List<T> Query<T>(string sql) where T : new()
{
return db.Query<T>(sql);
}
public int Execute(string sql)
{
return db.Execute(sql);
}
}
到此,我们的简易版ORM就搭建好了,下面让我们一起试用下这个ORM。
首先我们添加一个项目,SqliteTestConsole。
然后在Main函数中写上测试代码如下:
static void Main(string[] args)
{
SQLiteHelper sqliteHelper = new SQLiteHelper();
var list = sqliteHelper.Query<Stock>("select * from Stock");
sqliteHelper.Add(new Valuation() { Price = 100, StockId = 1, Time = DateTime.Now });
var list2 = sqliteHelper.Query<Valuation>("select * from Valuation");
var list3 = sqliteHelper.Query<Valuation>("select * from Valuation INDEXED BY ValuationStockId2 WHERE StockId > 2");//使用索引ValuationStockId2查询
try
{
sqliteHelper.Execute("drop index ValuationStockId");//删除索引,因为该索引已被删除,所以抛异常
}
catch (Exception ex)
{ }
}
然后运行调试,会抛出异常如下:
那么我们到底缺少什么依赖文件呢?
打开SQLite.cs文件,我们会发现如下代码:
如上图所示,我们缺少了依赖dll—sqlite3.dll。
下面我们打开sqlite的官网寻找并下载依赖动态库【Sqlite官网下载网址】
因为项目使用x86的Framework4.6.1,所以我们要找到对应的sqlite版本。
下载完成后,我们可看到如下文件。
我们把其中的sqlite3.dll移动到项目的输出目录【X盘\SqliteTestConsole\bin\Debug】下面。
然后我们运行项目,项目依然提示错误。
这是因为我们的下载的sqllite3.dll是x86的版本,所以我们要把Any CPU修改为x86,选择【配置管理器】,如下图:
然后我们再运行测试项目就可以正常编译通过了。
现在,我们再使用sqlitebrowser打开我们创建的User.db查看数据。
sqlitebrowser是一个sqlite的开源管理工具,下载地址:https://github.com/sqlitebrowser/sqlitebrowser。
如图所示,我们已经成功创建了表,并完成了插入数据操作。
----------------------------------------------------------------------------------------------------
到此SQLite的简易ORM就已经搭建完成了。
代码已经传到Github上了,欢迎大家下载。
Github地址:https://github.com/kiba518/SQLite_net.Helper
----------------------------------------------------------------------------------------------------
注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!
最新文章
- 使用Java判断字符串中的中文字符数量
- 【P1379】天才的约数和
- Smart210学习记录-------文件操作
- 【Android】跟着教程做の学习笔记
- 【noi2013】【bz3244】树的计数
- [转载]自定义ASP.NET MVC Html辅助方法 TagBuilder
- Cordova CrossWalk
- relay 2015-02-05 21:00 27人阅读 评论(0) 收藏
- http转https实战教程iis7.5
- 如何在IPFS里面上传一张图片
- Yii2表单提交(带文件上传)
- selenium之元素定位-xpath
- Java compiler 并行编译思考
- 记录一个pom文件
- spring mvc get请求中文乱码问题
- jquery关闭弹出层视频还在播放. 解决办法!
- 解决ssh出现";Write failed: Broken pipe";问题
- C#执行EXE程序
- Autofac与AOP功能例子
- arcgis_js_api_3.12的project实践
热门文章
- 海洋cms自带资源发布api插件和第三方资源站接入办法说明
- 图像滤镜艺术---Oilpaint油画滤镜
- UWP开发学习笔记3
- Docker笔记01-发布一个dotnetcore应用
- 让VC2012生成的程序支持XP系统(修改mkspecs\win32-msvc2012\qmake.conf,QT的DLL都是支持XP的,只与EXE有关)good
- CentOS7中firewalld的安装与使用详解
- ASP.NET Core 通过 Microsoft.DotNet.Watcher.Tools 实现热部署
- 跨平台网络通信与服务器框架 acl 3.2.0 发布,acl_cpp 是基于 acl 库的 C++ 库
- hive -e和hive -f的区别(转)
- kubernetes实战篇之windows添加自签ca证书信任