Windows ランタイムに SQLite を使用していますが、テーブル間の関係を定義する方法がわかりません。この機能は WinRT の SQLite でサポートされていますか?
そうでない場合、Windows RT のリレーショナル ローカル データベースの代替ソリューションはありますか?
Windows ランタイムに SQLite を使用していますが、テーブル間の関係を定義する方法がわかりません。この機能は WinRT の SQLite でサポートされていますか?
そうでない場合、Windows RT のリレーショナル ローカル データベースの代替ソリューションはありますか?
データベース エンジン自体がリレーションシップをサポートしています。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
ます。