nugetからSqliteライブラリをインストール
Sqliteでよく使われているライブラリはMicrosoft.Data.SqliteとSystem.Data.Sqliteがあります。
System.Data.SqliteはSqlite本家のライブラリでWindowsでよく利用されます。Linux版はNugetから入れてみるとNotFoundException SQLite.Interop.dllとエラーが出ます。Linuxで利用するにはSystem.Data.SQLiteのソースをダウンロードし、コンパイルしてからインポートしないといけないようです。
Microsoft.Data.Sqliteを使う
Microsoft.Data.Sqliteはnugetからそのまま使えるのでMicrosoftのものを使います。
Install-Package Microsoft.Data.Sqlite.Core -Version 5.0.6
//SQLitePCLRawも入れる必要あり
Install-Package SQLitePCLRaw.bundle_e_sqlite3 -Version 1.1.9
EntityFrameworkを利用したり暗号化したりする場合は以下のライブラリもインストールしないとエラーになります。
SQLitePCLRaw.bundle_e_sqlite3はMicrosoft.Data.Sqliteの利用に必須です。
Install-Package SQLitePCLRaw.bundle_e_sqlite3 -Version 1.1.9
Install-Package Microsoft.EntityFrameworkCore.Sqlite.Core -Version 5.0.6
Install-Package SQLitePCLRaw.bundle_sqlcipher -Version 1.1.9
Install-Package SQLitePCL.bundle_green -Version 0.9.3
Dapperをインストール
Install-Package Dapper
Dapper Extensionをインストール
Dapper Extensionは種類が多いため、検索して人気のあるダウンロード数の多いものをインストールする
Install-Package DapperExtensions
Dbテストサンプル
RiderのDBの支援機能でDbファイルとテーブルを作成した後で
using System;
using Dapper;
using DapperExtensions;
using Microsoft.Data.Sqlite;
namespace sqlConsoleApp1
{
class Program
{
public class test {
public int id { get; set; }
public string code { get; set; }
public string name { get; set; }
}
static void Main(string[] args)
{
SqliteConnectionStringBuilder b = new SqliteConnectionStringBuilder();
b.DataSource = "./test.db";
SqliteConnection con = new SqliteConnection(b.ConnectionString);
//SQL形式で書き出す
DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();
con.Open();
//dapperで_を有効にする
Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;
//外部キーの設定
SqliteCommand command = con.CreateCommand();
command.CommandText = "PRAGMA foreign_keys = ON;";
command.ExecuteNonQuery();
string sql = "select * from test;";
var result = con.Query<test>(sql);
foreach(var p in result) {
Console.WriteLine("ID:" + p.id + " 名:" + p.name);
}
test test1 = new test();
test1.name = "2";
test1.code = "java";
con.Insert<test>(test1);
string sql3 = "select * from test Where name = '2';";
var test_result2 = con.QueryAsync<test>(sql3);
Console.WriteLine(test_result2.Result);
con.Close();
}
}
}
DapperExtensions 1.7.0
1.7.0から非同期処理ができるようになりました。
test test1 = new test();
test1.name = "1";
test1.code = "java";
con.InsertAsync(test1);
Riderのデータベース支援機能を使う
データベースウィンドウの+ボタンからデータベース接続画面を開く
様々なDBの接続に対応している。Sqliteを選択
外部キーの設定ができる
データの編集
Dbからモデルファイルを自動生成する
Generate POCO.groovyをダウロードします。インターフェースを作る場合はGenerate IPOCO.groovyを
Generate POCO.groovyをコピー
データーベース ー 右クリック ー スクリプト拡張 ー スクリプトディレクトリに移動
schema ー 右クリック ー Files ー POCO.groovyをコピー
追記 DBのカラム名をそのまま使えるように修正
Generate POCO.groovy
Generate POCO.groovy
name : csharpName(col.getName()),
↓
name : col.getName(),
csharpNameをすべて取る。
typeMappingにパターンを追加しDBの型を抽出できるようにする
typeMapping = [
(~/(?i)^bit|bool$/) : "bool",