如何将ObservableCollection属性插入到本地sqlite-net数据库

本文关键字:sqlite-net 数据库 插入 ObservableCollection 属性 | 更新日期: 2023-09-27 18:13:32

我有一个关于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;

如何将ObservableCollection属性插入到本地sqlite-net数据库

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

从sqlite-net github站点的第一页,有两个要点应该有助于一些高层次的理解:

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

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

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

换句话说,sqlite-net将转换/映射SQL查询的结果集到您的模型;同样,这可能对扁平模型效果最好。

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

在查询数据时,您应该能够使用Get<T>方法和Table<T>方法,您也可以查看Query<T>方法。每个都应该将结果映射到类型参数。

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

我在过去的几个月里(包括昨天的演讲)使用了很多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在我的移动应用中非常有用。