【发布时间】:2010-07-15 21:52:50
【问题描述】:
尝试使用 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 表有多个引用,在尝试插入表时会导致多个引用和错误。
【问题讨论】:
-
嗨,这个问题可能会有所帮助:stackoverflow.com/questions/2761701/…
-
@andyp:这是我在谷歌搜索时不断提出的问题,但是我这里没有重复的外键。我什至用提供的补丁重新编译 DbMetal,但没有运气。
-
除了单列“INTEGER PRIMARY KEY NOT NULL”之外,为什么要在 SQLite 中使用任何主键?无论如何,除此之外的任何其他选择都不是该数据库的 real 主键。请参阅SQLite docs 了解更多信息。
-
我尝试将 QuestionChoice 表更改为只有一个
INTEGER PRIMARY KEY,但 DbMetal 仍在抱怨。这不是问题,是存在 2 个外键将其扔掉。