【问题标题】:Automatically get SQLite data and insert it into a class自动获取 SQLite 数据并插入到类中
【发布时间】:2012-05-11 17:56:10
【问题描述】:

我仍在学习 MVVM 模式,并且正在制作一个涉及 SQLite 数据库的新项目(C#4.0 和 WPF)。我过去很少使用数据库(sql),但我会做这样的事情:

Select * from persons;

然后循环遍历结果并将foreach结果添加到persons类中,类似于

result[0] = person.name; 
result[1] = person.id; 

等等。然后我会使用for 循环,直到我遍历所有行并将所有玩家添加到List(或MVVM 的ObservableCollection)。现在我想要更有活力,因为我会有更多的行我正在寻找类似的东西:

Person personone = "Select * from persons where ID = 1";

但这当然行不通。我曾尝试在 Google 上搜索我的问题,但没有找到答案。我找到了 SQL to LINQ,但它并不是我真正想要的东西。我发现最相关的是 massive sqlite class,但它似乎不适用于 VS11,因为它似乎已被弃用。

如何更动态地将 SQLite 中的数据插入到类中?

【问题讨论】:

    标签: c# oop sqlite mvvm


    【解决方案1】:

    Dapper 是一个很好的解决方案。您可以将查询结果映射到自定义 POCO 或动态对象。

    将查询结果映射到对象很简单:

    var cn = ... //create your db connection
    IEnumerable<MyClass> myList = cn.Query<MyClass>("select * from MyTable").ToList(); 
    

    对于单个实例,您可以这样做:

    MyClass myInstance = cn.Query<MyClass>("select * from MyTable where id = 1").SingleOrDefault(); 
    

    【讨论】:

    • 感谢您的快速回复,在查看后我遇到了一个问题,我使用 SQLiteConnection 而不是 IDbConnection?我的连接是这样建立的:var con = new SQLiteConnection("Data Source=C:/hugetestfile.sqlite;Version=3;");。如何使用 IDbConnection 接口创建 SQlite 连接?
    • SQLiteConnection 继承自 DbConnection,所以它应该可以正常工作。
    • 你是对的,非常感谢!顺便说一句,我无法执行 cn.query 我必须 var testlist = Dapper.SqlMapper.Query(con, "select * from people");而不是 var testlist = con.Query("select * from Champions");快速解决为什么我在这里失败了?
    • 不确定 - 您是否使用 NuGet 安装了 Dapper?
    • Nuget?不,我只是“导入”了类/代码。我把它修好了愚蠢的我。我不得不添加使用 Dapper; ...对不起^^ :D 再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2013-12-19
    • 2011-08-05
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多