我正在使用SQLite for Windows Runtime,但我没有看到任何方法来定义表之间的关系。 SQLite for WinRT是否支持此功能?
如果没有,是否有针对Windows RT的关系本地数据库的替代解决方案?
答案 0 :(得分: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
对象。