尝试使用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表的引用,在尝试插入表时会导致多个引用和错误。
答案 0 :(得分:2)
为了解决这个问题,我在评论中提出了Stephen Cleary的建议,并对所有表使用了一个INTEGER PRIMARY KEY
。似乎虽然SQLite可能支持多个外键,但DBMetal对这个想法感到窒息。
因此,另一个表的外键会产生一个引用,而DBMetal会适当地处理所有内容。