SQLite簡易版ORM 首先打開項目,使用nuget搜索sqlite-net,如下圖: 下載完成後,我們會多出兩個文件,SQLite.cs和SQLiteAsync.cs。 我們新建一個文件夾SQLiteResources,把這倆文件放進去。 然後我們創建兩個表實體,如下: 接下來我們創建一個SQL ...
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
----------------------------------------------------------------------------------------------------
註:此文章為原創,歡迎轉載,請在文章頁面明顯位置給出此文鏈接!
若您覺得這篇文章還不錯,請點擊下方的【推薦】,非常感謝!