0

我有一个关于 sqlite-net 库的快速问题,可以在这里找到:https ://github.com/praeclarum/sqlite-net 。

问题是我不知道如何将集合和自定义对象插入数据库,以及在查询时如何将它们转换回来(如果需要)。

以这个模型为例:

[PrimaryKey, AutoIncrement]
public int Id { get; set; }
private string _name; // The name of the subject. i.e "Physics"
private ObservableCollection<Lesson> _lessons;
4

2 回答 2

0

在过去的几个月里,我用 SQLite-net 做了很多工作(包括昨天的这个演讲)

如何将集合和自定义对象插入数据库

我认为答案是他们不会。

虽然它是一个非常强大的数据库和 ORM,但 SQLite-net 的目标是轻量级移动应用程序。由于这种轻量级的焦点,使用的类通常是非常简单的扁平对象,例如:

public class Course
{
    public int CourseId { get; set; }
    public string Name { get; set; }
}

public class Lesson
{
    public int LessonId { get; set; }
    public string Name { get; set; }
    public int CourseId { get; set; }
}

如果您随后需要将这些重新连接在一起并处理相关对象的插入和删除,那么这取决于您 - 应用程序开发人员 - 来处理。没有像更大、更复杂的 ORM 堆栈那样自动跟踪相关对象。

在实践中,我没有发现这是一个问题。我发现 SQLite-net 在我的移动应用程序中非常有用。

于 2013-05-14T20:55:53.663 回答
0

前言:我没用过sqlite-net;相反,我花了一些时间简单地查看问题中发布的 github 链接上的源代码。

从sqlite-net github站点的第一页开始,有两个要点应该有助于进行一些高级理解:

  • 用于安全执行 CRUD 操作和查询(使用参数)以及以强类型方式检索这些查询结果的非常简单的方法

换句话说,sqlite-net 可以很好地处理非复杂模型;可能最适合扁平化模型。

  • 与您的数据模型一起工作,而不会强迫您更改您的类。(包含一个小的反射驱动 ORM 层。)

换句话说,sqlite-net 会将 SQL 查询的结果集转换/映射到您的模型;再次,可能最适合扁平模型。

查看SQLite.cs的主要源代码,有一个InsertAll方法和一些将插入集合的重载。

在查询数据的时候,应该可以使用Get<T>method和Table<T>method,还有一个Query<T>method也可以看看。每个都应该将结果映射到类型参数。

最后,查看示例测试,以更深入地了解使用该框架。

于 2013-05-14T13:39:47.150 回答