DbMetal で SQLite データベースを処理するのに苦労しています。私はついに問題を切り分けました。テーブルが同じ列への 2 つの外部キー参照を持つことは許可されません。
たとえば、次の 2 つのテーブルを含む SQLite データベースは失敗します。
CREATE TABLE Person
(
Id INTEGER PRIMARY KEY,
Name TEXT NOT NULL
);
CREATE TABLE Match
(
Id INTEGER PRIMARY KEY,
WinnerPersonId INTEGER NOT NULL REFERENCES Person(Id),
LoserPersonId INTEGER NOT NULL REFERENCES Person(Id)
);
次のエラーが表示されます。
DbMetal: シーケンスに一致する要素が複数含まれています
2 番目の外部キー参照を取り除けば、エラーは発生しません。
したがって、これは機能します:
CREATE TABLE Match
(
Id INTEGER PRIMARY KEY,
WinnerPersonId INTEGER NOT NULL REFERENCES Person(Id),
LoserPersonId INTEGER NOT NULL
);
しかし、Person テーブルを参照するには、両方の "person" 列が本当に必要です。
これについてバグレポートを提出しましたが、当面は回避策を使用できます。何か案は?