2

Windows ランタイムに SQLite を使用していますが、テーブル間の関係を定義する方法がわかりません。この機能は WinRT の SQLite でサポートされていますか?

そうでない場合、Windows RT のリレーショナル ローカル データベースの代替ソリューションはありますか?

4

1 に答える 1

2

データベース エンジン自体がリレーションシップをサポートしています。1 つの方法は、テーブルを作成するときに外部キーを指定することです。

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オブジェクトは自動的にロードされません。オブジェクトをロードするには、2 回目の SQL-Net 呼び出しを行う必要がありBarます。

于 2013-05-14T13:55:06.477 に答える