SQLite
でデータベースを使用していますWindows 8 Store Application
。さらに、SQLite ラッパーを使用sqlite-net
してデータベースの操作を行います。
私の状況をご理解いただけるよう、詳しくご説明いたします。クラスLocationModel classes
など、ビジネスロジックを含むものがあります。次に、 LocationDbなど、データベース テーブルの生成元があります。DatabaseModels
すべての Model クラスで、 Insert(Model model) 、 Update(Model model)、Delete(int id)、GetAllRecords()、GetRecord(int id)などの基本的なデータベース メソッドを実装したくありません。代わりに、これらのメソッドをすべてのモデルの基本クラスに実装したいと考えています。すべてのモデルのこの基本クラスはModelBaseと呼ばれます。すべてのデータベース モデルの基本クラスはDbModelBaseです。
すべてのモデルで次のように Insert メソッドを実装しても問題はありません。
public int Insert(ModelBase model)
{
int id;
using (var db = new SQLite.SQLiteConnection(MainApplication.DBPath))
{
db.Insert(model.GetDbModelFromModel());
id = (int)SQLite3.LastInsertRowid(db.Handle);
}
return id;
}
しかし、sqlite-net を使用して他のものを実装する方法がわかりません。特定のテーブルで特定のデータ レコードを検索する必要があります。IDを含むモデルオブジェクトがあります。しかし、特定のテーブルを明示的に呼び出さずに、1 つのメソッドをすべてのモデル クラスで動作させるにはどうすればよいでしょうか? 次のコードは、単一の特定のデータベース テーブルに対して機能します...
using (var db = new SQLite.SQLiteConnection(MainApplication.DBPath))
{
var queryResult = db.Table<LocationDb>().Where(l => l.Id == model.Id);
if (queryResult.Count() == 1)
{
db.Update(new TeacherDb(model));
}
}
…でも書けない
var queryResult = db.Table<typeof(databaseModel)>().Where(t => t.Id == model.Id);