sqlite - Windows RT 上的关系型 SQLite

标签 sqlite windows-runtime foreign-keys windows-store-apps

我正在使用SQLite for Windows Runtime但我没有看到任何方法来定义表之间的关系。 WinRT 的 SQLite 支持此功能吗?

如果没有,Windows RT 的关系本地数据库是否有任何替代解决方案?

最佳答案

数据库引擎本身支持关系。一种方法是在创建表时指定外键:

CREATE TABLE Foo(
Id integer primary key autoincrement not null ,
...
)

CREATE TABLE Bar(
Id integer primary key autoincrement not null,
FooId integer not null REFERENCES Foo (Id) ON UPDATE CASCADE,
...
)

我相信每个数据库连接还必须通过执行以下编译指示来启用外键:

PRAGMA foreign_keys = ON

就可用的 ORM 而言,我想这取决于情况。我只用过SQLite-Net ,所以我只能谈谈这一点。据我所知,SQL-Net 目前不支持外键功能。您必须手动管理这些关系。

例如,假设您的 Foo 对象中有一个对 Bar 对象的引用。

对于创建表,您不能使用 SQLite-Net 表创建方法。您必须使用 SQL 来创建表以及关系。

此外,当您使用 SQL-Net 加载 Foo 对象时,相关的 Bar 对象不会自动加载。您需要进行第二次 SQL-Net 调用来加载 Bar 对象。

关于sqlite - Windows RT 上的关系型 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16539683/

相关文章:

database - 我可以将一个 SQLite 数据库存储在另一个 SQLite 数据库中吗?

android - 找不到 DatabaseObjectNotClosedException 错误的来源

c# - 在 WinRT 应用程序中处理向上滑动、向下滑动、向左滑动和向右滑动手势

mysql - 无法创建表(errno : 150)

oracle - oracle 外键约束名称 SYS_C 来自哪里

python - 用于大型(r)数据集的 Pandas

python - 在 Python 中打开一个压缩的 SQLite 数据库

c# - 从流创建 ID2D1Bitmap1 时如何尊重 EXIF 方向

multithreading - C# 应用程序中使用的 C++ WinRT DLL 中出现 "Activating a single-threaded class from MTA is not supported"错误

jpa - 在 JPA 中,将多对一作为主键会引发引用完整性约束冲突