如何将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;
前言:我没有用过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在我的移动应用中非常有用。