database - DbMetal 对 SQLite 中重复的外键引用感到窒息——有什么想法吗?

标签 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: 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/

相关文章:

go - gorm没有在数据库模式中建立外键关系

mysql - 优化查看大量数据的 MySQL 查询

android - SQLite 使用 ContentValues 和 BigInteger 数据类型?

sql - 在SQL中计算重复的组值

iphone - 核心数据关系

java - 在 greenDao 中保留 ArrayList<Integer>

MySQL数据库右移

java - 如何让组合框说一件事但放入另一件事?

python - 从查询列中划分字符串并将结果插入同一个表

android - 仅在 INTEGER PRIMARY KEY 上允许使用 AUTOINCREMENT - android