2010-05-03 4 views
1

J'ai eu du mal à faire en sorte que DbMetal traite ma base de données SQLite. J'ai finalement isolé le problème. Il ne permettra pas à une table d'avoir deux références de clé étrangère à la même colonne.DbMetal étouffe sur des références de clés étrangères répétées dans SQLite - des idées?

Par exemple, une base de données SQLite avec ces deux tables échouera:

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) 
); 

Je reçois cette erreur:

DbMetal: Sequence contains more than one matching element

Si je me débarrasser de la deuxième référence clé étrangère, aucune erreur ne se produit .

Ainsi, cela fonctionne:

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

Mais je vraiment besoin les deux colonnes "personne" pour faire référence à la table de personne.

J'ai soumis un bug report pour cela, mais je pourrais utiliser une solution de contournement pendant ce temps. Des idées?

Répondre

3

Je viens d'avoir le même problème et j'ai créé un patch. Je l'ai également posté à votre bug report. Pour les autres, vous pouvez trouver le patch ici: http://pastebin.com/VhNptMqp.

+0

Super, FrozenCow, merci! Est-il possible de mettre la main sur un .exe compilé ou dois-je télécharger la source et la coller? – devuxer

+0

J'ai fini par télécharger la source et mettre vos corrections. Travaillé comme un charme. Merci encore pour votre aide. – devuxer

+0

Ah, désolé, n'a pas été averti de vos commentaires. Bon d'entendre tout cela a fonctionné. – FrozenCow

Questions connexes