欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#使用sqlite-net搭建简易的ORM

程序员文章站 2023-10-16 23:03:47
SQLite简易版ORM 首先打开项目,使用nuget搜索sqlite-net,如下图: 下载完成后,我们会多出两个文件,SQLite.cs和SQLiteAsync.cs。 我们新建一个文件夹SQLiteResources,把这俩文件放进去。 然后我们创建两个表实体,如下: 接下来我们创建一个SQL ......

sqlite简易版orm

首先打开项目,使用nuget搜索sqlite-net,如下图:

C#使用sqlite-net搭建简易的ORM

下载完成后,我们会多出两个文件,sqlite.cs和sqliteasync.cs。

我们新建一个文件夹sqliteresources,把这俩文件放进去。

C#使用sqlite-net搭建简易的ORM

然后我们创建两个表实体,如下:

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)
    {

    }
}

 然后运行调试,会抛出异常如下:

C#使用sqlite-net搭建简易的ORM

那么我们到底缺少什么依赖文件呢?

打开sqlite.cs文件,我们会发现如下代码:

C#使用sqlite-net搭建简易的ORM

如上图所示,我们缺少了依赖dll—sqlite3.dll。

下面我们打开sqlite的官网寻找并下载依赖动态库【sqlite官网下载网址

因为项目使用x86的framework4.6.1,所以我们要找到对应的sqlite版本。

C#使用sqlite-net搭建简易的ORM

下载完成后,我们可看到如下文件。

 C#使用sqlite-net搭建简易的ORM

我们把其中的sqlite3.dll移动到项目的输出目录【x盘\sqlitetestconsole\bin\debug】下面。

然后我们运行项目,项目依然提示错误。

C#使用sqlite-net搭建简易的ORM

 这是因为我们的下载的sqllite3.dll是x86的版本,所以我们要把any cpu修改为x86,选择【配置管理器】,如下图:

C#使用sqlite-net搭建简易的ORM

C#使用sqlite-net搭建简易的ORM

然后我们再运行测试项目就可以正常编译通过了。

现在,我们再使用sqlitebrowser打开我们创建的user.db查看数据。

sqlitebrowser是一个sqlite的开源管理工具,下载地址:。

C#使用sqlite-net搭建简易的ORM

 C#使用sqlite-net搭建简易的ORM

 如图所示,我们已经成功创建了表,并完成了插入数据操作。

----------------------------------------------------------------------------------------------------

到此sqlite的简易orm就已经搭建完成了。

代码已经传到github上了,欢迎大家下载。

github地址:https://github.com/kiba518/sqlite_net.helper

----------------------------------------------------------------------------------------------------

注:此文章为原创,欢迎转载,请在文章页面明显位置给出此文链接!
若您觉得这篇文章还不错,请点击下方的推荐】,非常感谢!