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

SQLite簡易版ORMhtml

首先打開項目,使用nuget搜索sqlite-net,以下圖:git

下載完成後,咱們會多出兩個文件,SQLite.cs和SQLiteAsync.cs。github

咱們新建一個文件夾SQLiteResources,把這倆文件放進去。sql

而後咱們建立兩個表實體,以下:數據庫

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函數中寫上測試代碼以下:lua

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

    }
}

 而後運行調試,會拋出異常以下:spa

那麼咱們到底缺乏什麼依賴文件呢?

打開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

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

注:此文章爲原創,歡迎轉載,請在文章頁面明顯位置給出此文連接!
若您以爲這篇文章還不錯,請點擊下方的推薦】,很是感謝!

相關文章
相關標籤/搜索