2

我正在为 Windows 运行时使用 SQLite,但我看不到任何定义表之间关系的方法。SQLite for WinRT 是否支持此功能?

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

4

1 回答 1

2

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

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对象。

于 2013-05-14T13:55:06.477 回答