DBMetal(SQLite):“Sequence包含多个元素”,带有多个外键

时间:2010-07-15 21:52:50

标签: c# linq sqlite dbmetal

尝试使用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表的引用,在尝试插入表时会导致多个引用和错误。

1 个答案:

答案 0 :(得分:2)

为了解决这个问题,我在评论中提出了Stephen Cleary的建议,并对所有表使用了一个INTEGER PRIMARY KEY。似乎虽然SQLite可能支持多个外键,但DBMetal对这个想法感到窒息。

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