Domanda

ho lottato per arrivare DbMetal per elaborare la mia database SQLite. finalmente ho isolato il problema. Non permetterà di avere un tavolo due riferimenti di chiave esterna alla stessa colonna.

Ad esempio, un database SQLite con queste due tabelle fallirà:

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

ottengo questo errore:

  

DbMetal: Sequenza contiene più di un elemento corrispondente

Se mi libero del secondo riferimento di chiave esterna, si verifica alcun errore.

Quindi, questo funziona:

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

Ma ho davvero bisogno di entrambe le colonne "persona" per fare riferimento alla tabella di persona.

Ho presentato una Bug Report per questo, ma potrei utilizzare una soluzione alternativa nel frattempo. Tutte le idee?

È stato utile?

Soluzione

Ho appena avuto lo stesso problema e ha creato una patch. Ho anche inviato a vostro bug report . Per gli altri, è possibile trovare la patch qui:. http://pastebin.com/VhNptMqp

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top