c# - 如何使用 sqlite-net 在适用于所有数据库模型的父类中实现插入、更新和删除?

标签 c# sqlite windows-store-apps sqlite-net

我在 Windows 8 商店应用程序 中使用 SQLite 数据库。 此外,我使用 SQLite 包装器 sqlite-net 对数据库进行操作。

我会详细解释这一点,以便您了解我的情况。 有包含业务逻辑的模型类,例如类Location。然后是生成数据库表的 DatabaseModels,例如 LocationDb

我不想实现基本的数据库方法,如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 的模型对象。 但是如何在不显式调用特定表的情况下使一种方法适用于所有模型类? 以下代码适用于单个特定数据库表...

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

最佳答案

写一个generic function为此。

关于c# - 如何使用 sqlite-net 在适用于所有数据库模型的父类中实现插入、更新和删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15981241/

相关文章:

c# - 单一方法中的多个等待

c# - 如何在不将整个文档加载到内存的情况下处理 Xml 文件?

ruby-on-rails - 将 Rails 应用程序移动到 PostgreSQL - 整数超出范围

image-processing - 使用 Direct2D 的大图像

c# - 动态创建的网格不显示

c# - TransactionScope:避免分布式事务

c# - 如何在 Visual Studio 2010 中恢复损坏的 .csproj 文件?

java - 带偏移量的 android sqlite 查询不返回所需的行

objective-c - FM数据库 : is it safe to leave failing inserts (unique PK key violated)?

c# - 如何在 Windows 应用商店应用程序的 ListView/GridView 中的单击项目处显示 Popup/Flyout