0

(DbLinq の一部として) DbMetal を使用して C# ファイルを作成しようとすると、次のエラーが発生します。

DbMetal: シーケンスに複数の要素が含まれています

主キーの一部として複数の外部キーを参照する場合にのみ表示されます。以下は、問題を引き起こしているテーブルの DDL です。

CREATE TABLE [QuestionChoice] 
(
    [QuestionaireID] INTEGER NOT NULL,
    [QuestionNumber] INTEGER NOT NULL,
    [ChoiceNumber] INTEGER NOT NULL,
    [Wording] VARCHAR
    (
        100
    )
    NOT NULL,
    PRIMARY KEY 
    (
        [ChoiceNumber],
        [QuestionNumber],
        [QuestionaireID]
    ),
    FOREIGN KEY 
    (
        [QuestionNumber],
        [QuestionaireID]
    )
    REFERENCES [Question]
    (
        [QuestionNumber],
        [QuestionaireID]
    )
)

SQLite データベースのセットアップに使用しているツールは SQLite Studio です。外部キーを設定するためにテーブル制約を設定しました。

外部キーをテーブル制約としてではなく (項目ごとに) 個別に設定すると、生成されたクラスは Question テーブルへの複数の参照を持ち、テーブルに挿入しようとすると複数の参照とエラーが発生します。

4

1 に答える 1

2

この問題を解決するために、コメントでStephen Clearyの提案を取り入れ、INTEGER PRIMARY KEYすべてのテーブルに1つを使用しました。SQLiteは複数の外部キーをサポートしている可能性がありますが、DBMetalはそのアイデアを窒息させているようです。

その結果、別のテーブルへの外部キーは単一の参照になり、DBMetalはすべてを適切に処理します。

于 2010-09-19T06:57:59.653 に答える