DbMetal在SQLite中重复使用外键引用 - 任何想法?

时间:2010-05-03 22:45:22

标签: database sqlite orm dblinq dbmetal

我一直在努力让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:序列包含多个匹配元素

如果我删除了第二个外键引用,则不会发生错误。

所以,这有效:

CREATE TABLE Match
(
    Id INTEGER PRIMARY KEY,
    WinnerPersonId INTEGER NOT NULL REFERENCES Person(Id),
    LoserPersonId INTEGER NOT NULL
);

但我真的需要两个“人”列来引用Person表。

我为此提交了bug report,但我可以在此期间使用解决方法。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,并创建了一个补丁。我也在你bug report张贴了它。对于其他人,您可以在此处找到补丁:http://pastebin.com/VhNptMqp