1

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" 列が本当に必要です。

これについてバグレポートを提出しましたが、当面は回避策を使用できます。何か案は?

4

1 に答える 1

3

同じ問題が発生し、パッチを作成しました。バグレポートにも掲載しました。他の人のために、あなたはここでパッチを見つけることができます:http: //pastebin.com/VhNptMqp

于 2010-05-05T15:59:38.650 に答える