0

尝试使用 DbMetal(作为 DbLinq 的一部分)创建 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为所有表格使用了一个。看起来虽然 SQLite 可能支持多个外键,但 DBMetal 对这个想法感到窒息。

因此,另一个表的外键会产生一个引用,DBMetal 会适当地处理所有事情。

于 2010-09-19T06:57:59.653 回答