3

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);
4

2 に答える 2

0

そのための汎用関数を記述します。

于 2013-04-12T21:55:27.837 に答える