我一直在努力让 DbMetal 处理我的 SQLite 数据库。我终于隔离了问题。它不允许一个表对同一列有两个外键引用。
例如,包含这两个表的 SQLite 数据库将失败:
CREATE TABLE Person
(
Id INTEGER PRIMARY KEY,
Name TEXT NOT NULL
);
CREATE TABLE Match
(
Id INTEGER PRIMARY KEY,
WinnerPersonId INTEGER NOT NULL REFERENCES Person(Id),
LoserPersonId INTEGER NOT NULL REFERENCES Person(Id)
);
我收到这个错误:
DbMetal: Sequence contains more than one matching element
如果我去掉第二个外键引用,不会发生错误。
所以,这是可行的:
CREATE TABLE Match
(
Id INTEGER PRIMARY KEY,
WinnerPersonId INTEGER NOT NULL REFERENCES Person(Id),
LoserPersonId INTEGER NOT NULL
);
但我确实需要两个“person”列来引用 Person 表。
我提交了一个 bug report为此,但我可以同时使用解决方法。有什么想法吗?
最佳答案
我刚刚遇到了同样的问题并创建了一个补丁。我也把它贴在你的bug report .对于其他人,您可以在此处找到补丁:http://pastebin.com/VhNptMqp .
关于database - DbMetal 对 SQLite 中重复的外键引用感到窒息——有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761701/